打开/关闭搜索
搜索
打开/关闭菜单
549
7
12
2051
OGAS数据中枢
导航
首页
最近更改
随机页面
特殊页面
上传文件
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“︁Module:Infobox3”︁的源代码
来自OGAS数据中枢
查看
阅读
查看源代码
查看历史
associated-pages
模块
讨论
更多操作
←
Module:Infobox3
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
local table = table local string = string local ipairs = ipairs local unpack = unpack local p = {} local parentArgs = {} local processedArgs = {} -- 从父框架中接收一个或所有以某个前缀开头的前缀 -- @param {string} pref - 参数名的前缀 -- @param {string} desiredIdx - 欲接收参数的序号,`-1`代表接收所有参数 local function getPrefixArgsFromParent(pref, desiredIdx) desiredIdx = tonumber(desiredIdx) or -1 local prefLen = #pref local currIdx = 0 for i, arg in ipairs(parentArgs) do local key, val = unpack(arg) if string.sub(key, 1, prefLen) == pref then -- 接收所有参数 if desiredIdx == -1 then table.insert(processedArgs, string.sub(key, prefLen+1) .. '::' .. val) -- 只接收特定序号的参数 else currIdx = currIdx + 1 if currIdx == desiredIdx then table.insert(processedArgs, string.sub(key, prefLen+1) .. '::' .. val) return end end end end if currIdx < desiredIdx then mw.log('[Infobox3] 第' .. desiredIdx .. '个' .. pref .. '前缀参数不存在!') end end local function _main(frame, calleeTemplate) -- 预先将传给父框架的、以 `::` 分割的键值对筛选出来存好 -- 为了保持顺序而借用匿名参数,须注意这绕过了 Scribunto 的设计哲学 for i, arg in ipairs(frame:getParent().args) do local key, val = string.match(arg, '^%s*(.-)%s*::%s*(.-)%s*$') if key ~= nil and val ~= '' then table.insert(parentArgs, {key, val}) end end -- 加工传给此模块的参数 for argKey, argVal in pairs(frame.args) do if type(argKey) ~= 'number' then processedArgs[argKey] = argVal end end for _, argVal in ipairs(frame.args) do local prefix = string.sub(argVal, 1, 1) local key, val = string.match(string.sub(argVal, 2), '^%s*(.-)%s*::%s*(.-)%s*$') if prefix == '*' then getPrefixArgsFromParent(key, val) else table.insert(processedArgs, argVal) end end -- 将加工后的参数传给 Infobox3 或 Infobox3/legacy return frame:expandTemplate{ title = calleeTemplate, args = processedArgs } end function p.main(frame) return _main(frame, 'Infobox3') end function p.legacy(frame) return _main(frame, 'Infobox3/legacy') end return p
该页面嵌入的页面:
Module:Infobox3/doc
(
查看源代码
)
返回
Module:Infobox3
。
查看“︁Module:Infobox3”︁的源代码
来自OGAS数据中枢