模組:Sandbox/サンムル/Nav/doc
此頁面為 Module:Sandbox/サンムル/Nav 的說明文件
簡介
本模塊為優化分析器展開模板過程中耗費的各項資源,僅針對{{Navbar}}、{{Navbox}}及其姊妹模板,在以下版本的基礎上翻譯改寫而成,部分模板在翻譯改寫過程中按照使用者習慣等因素對參數有部分增刪,細則請見#參數增刪。
開發相關
本節將整理介紹模塊代碼中使用的各個函數的功能、參數及返回值,以便未來維護所需。
外部調用
模塊的導出函數之一,在Wiki代碼中通過{{#invoke:Nav|bar}}
調用,用於構建模板{{Navbar}}的Wiki代碼。
模塊的導出函數之一,在Wiki代碼中通過{{#invoke:Nav|box}}
調用,用於構建模板{{Navbox}}及其姊妹模板的Wiki代碼。
內部調用
notnil
notnil( value, default )
本函數檢查value
是否為空值,如果是則返回default
,否則返回value
。
__nn
是本函數的別名。
notnilnorempty
notnilnorempty( value, default )
本函數檢查value
是否為空值或零長度字符串,如果是則返回default
,否則返回value
。
__nne
是本函數的別名。
notnilnorwhitespace
notnilnorwhitespace ( value, default )
本函數檢查value
是否為空值或空白字符組成的字符串,如果是則返回default
,否則返回value
。
__nnw
是本函數的別名。
notnilnoremptynorwhitespace
notnilnoremptynorwhitespace ( value, default )
本函數檢查value
是否為空值、零長度字符串或空白字符組成的字符串,如果是則返回default
,否則返回value
。
__nnew
是本函數的別名。
iif
iif( condition, truevalue, falsevalue )
本函數檢查condition
的值,若為真時返回truevalue
,否則返回falsevalue
。
等同於以下代碼:
if condition then return truevalue else return falsevalue end
paramindexes
paramindexes( paramname, pattern )
本函數用於獲取參數名稱paramname
中的序號部分,例如list18
中的18
。
pattern
的格式以正則表達式為基礎,因此其格式應當遵守Unicode字符串匹配的模式。在前者基礎上有以下規則:
%
:將自動替換成正則表達式的(%d+)
,用以匹配這個位置上的序號;%%
:將自動替換成正則表達式的%
,用作正則表達式中%
字符的轉義。
函數返回結果格式為:【所有序号文本】 【所有序号数值】
,其中每個值段都是一個獨立的返回值列表項。
若格式錯誤,則返回nil
。
示例:
local paramname = "prefix000infix10postfix08" local pattern = "^prefix%infix%postfix%$" print( paramindexes( paramname, pattern ) ) -- 打印结果: -- 000 10 08 0 10 8
indexedparamvalue
indexedparamvalue( args, pattern, raw, index, rawfunc, indexfunc )
本函數用於獲取參數表中指定序號的參數名稱對應的參數值。
args:參數表; pattern:構造參數名稱時遵循的模式,追加以下規則:
%
:將自動替換成raw
或index
的對應位置的序號;%%
:將自動替換成%
,用作%
字符的轉義。
raw、index:分別表示序號文本和序號數值。
rawfunc、indexfunc:分別表示使用序號文本和序號數值構造參數名稱後,從參數表中取得對應參數值的處理函數。
- 當
rawfunc
不為nil
且indexfunc
為nil
時,indexfunc
將使用rawfunc
的值。或者可以理解為,使用同一個函數處理兩個參數值; - 其他情況下,兩個參數的默認值均為
notnilnoremptynorwhitespace
。
若遇到名稱形如list18
、list018
、list0000018
等序號數值同為18
的參數共存的情況下,本函數按照以下順序獲取參數值:
- 查找使用序號文本即
raw
參數構造的參數名稱; - 查找使用序號數值即
index
參數構造的參數名稱; - 遍歷參數表
args
中所有符合格式pattern
且序號一致的參數,順次對每個參數先後使用rawfunc
和indexfunc
處理,返回第一個不為nil
的值。- 順次可能並不與調用頁面的Wiki代碼中參數表的書寫順序一致,其順序依循各Lua解釋器的內部實現。