置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

模块:Sandbox/サンムル/Nav/doc

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳到导航 跳到搜索

这是Module:Sandbox/サンムル/Nav的文档页面

简介

本模块为优化分析器展开模板过程中耗费的各项资源,仅针对{{Navbar}}、{{Navbox}}及其姊妹模板,在以下版本的基础上翻译改写而成,部分模板在翻译改写过程中按照使用者习惯等因素对参数有部分增删,细则请见#参数增删

开发相关

本节将整理介绍模块代码中使用的各个函数的功能、参数及返回值,以便未来维护所需。

外部调用

nav.bar

模块的导出函数之一,在Wiki代码中通过{{#invoke:Nav|bar}}调用,用于构建模板{{Navbar}}的Wiki代码。

nav.box

模块的导出函数之一,在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:构造参数名称时遵循的模式,追加以下规则:

  • %:将自动替换成rawindex的对应位置的序号;
  • %%:将自动替换成%,用作%字符的转义。

rawindex:分别表示序号文本序号数值

  • 两个参数可以直接传入类型为stringnumber的数值,也可以使用table包裹后传入;
  • 当有多个序号时,必须使用table包裹后传入。

rawfuncindexfunc:分别表示使用序号文本序号数值构造参数名称后,从参数表中取得对应参数值的处理函数。

  • rawfunc不为nilindexfuncnil时,indexfunc将使用rawfunc的值。或者可以理解为,使用同一个函数处理两个参数值;
  • 其他情况下,两个参数的默认值均为notnilnoremptynorwhitespace


若遇到名称形如list18list018list0000018序号数值同为18的参数共存的情况下,本函数按照以下顺序获取参数值:

  1. 查找使用序号文本raw参数构造的参数名称;
  2. 查找使用序号数值index参数构造的参数名称;
  3. 遍历参数表args中所有符合格式pattern且序号一致的参数,顺次对每个参数先后使用rawfuncindexfunc处理,返回第一个不为nil的值。
    • 顺次可能并不与调用页面的Wiki代码中参数表的书写顺序一致,其顺序依循各Lua解释器的内部实现。