查看“模块:TemplateArgSpreader”的源代码
←
模块:TemplateArgSpreader
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
local module = {} local getArgs = require('Module:Arguments').getArgs function _main(args) local templateTitle = args['__tl'] local templateArgs = mw.text.jsonDecode(args['__args'] or '{}') if mw.title.new(templateTitle, 'Template') == nil then error('模板“'..titleTemplate..'”不存在!') end args['__tl'] = nil args['__args'] = nil for k, v in pairs(args) do local argValue = v if templateArgs[k] ~= nil then local tlArgBlendMode = templateArgs[k].blendMode local tlArgVal = templateArgs[k].value if tlArgBlendMode == 'begin' then argValue = v..tlArgVal elseif tlArgBlendMode == 'end' then argValue = tlArgVal..v elseif tlArgBlendMode == 'middle' then argValue = mw.ustring.gsub(tlArgVal, '%${__arg}', v) end end templateArgs[k] = argValue end for k, v in pairs(templateArgs) do if type(v) == 'table' then templateArgs[k] = templateArgs[k].value end end return mw.getCurrentFrame():expandTemplate{ title = templateTitle, args = templateArgs } end function _stringify(args) local blendModesStr = args['__blendModes'] or '' local blendModes = {} if #blendModesStr ~= 0 then for v in mw.text.gsplit(blendModesStr, ',', true) do local mode = mw.text.split(v, ':', true) blendModes[mw.text.trim(mode[1])] = mw.text.trim(mode[2]) end end args['__blendModes'] = nil local templateArgs = {} for k, v in pairs(args) do if k:find('^%d+$') then error('不能出现匿名(数字)参数!') end templateArgs[k] = { value = v, blendMode = blendModes[k] or 'rewrite' } end return mw.text.jsonEncode(templateArgs) end function module.main(frame) local args = getArgs(frame) return _main(args) end function module.stringify(frame) local args = getArgs(frame) return _stringify(args) end return module
该页面使用的模板:
模块:TemplateArgSpreader/doc
(
查看源代码
)
返回至
模块:TemplateArgSpreader
。
导航菜单
个人工具
登录
名字空间
模块
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
随机页面
最近更改
最新文件
常用
上传多个文件
工具
链入页面
相关更改
特殊页面
页面信息