模块: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解释器的内部实现。