置顶公告:【置顶】关于临时开启评论区所有功能的公告(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解釋器的內部實現。