查看“模块:ArgsUtil”的源代码
←
模块:ArgsUtil
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
local util_text = require('Module:TextUtil') local util_table = require('Module:TableUtil') local bool_false = { ['false'] = true, ['no'] = true, [''] = true, ['0'] = true, ['nil'] = true } local bool_true = { ['true'] = true, ['yes'] = true } local lang = mw.getLanguage('en') local p = {} function p.norm(v) if not v then return false end local lc = lang:lc(v) if bool_false[lc] then return false elseif bool_true[lc] then return true end return v end function p.castAsBool(str) if not str or bool_false[lang:lc(str)] then return false end return true end function p.nilToFalse(val) -- casts nil as false -- does not change anything else -- used if needing to have false but non-nil values in a table -- for ipairs, util_table.removeFalseEntries, etc return not not val and val end function p.lookupVars(str, lookup_tbl, skipdefault) -- for rolenames etc. if a default table is supplied, this will be -- returned with priority over lookup.DEFAULT in the case of no match local vars = str and lookup_tbl[lang:lc(str)] if not vars then if skipdefault then return nil end return lookup_tbl.DEFAULT end if type(vars) == 'string' then vars = lookup_tbl[vars] end return vars end function p.merge(norm) local f = mw.getCurrentFrame() local origArgs = f.args local parentArgs = f:getParent().args local args = {} for k, v in pairs(origArgs) do v = mw.text.trim(tostring(v)) if norm and v ~= '' or not norm then args[k] = v end end for k, v in pairs(parentArgs) do v = mw.text.trim(v) if norm and v ~= '' or not norm then args[k] = v end end return args end function p.overwrite(norm) local f = mw.getCurrentFrame() local origArgs = f.args local parentArgs = f:getParent().args local args = {} for k, v in pairs(parentArgs) do v = mw.text.trim(v) if norm and v ~= '' or not norm then args[k] = v end end for k, v in pairs(origArgs) do v = mw.text.trim(tostring(v)) if norm and v ~= '' or not norm then args[k] = v end end return args end function p.numberedArgsToTable(args, argname, disallowUnnamedFirst, max) if not max then max = -1 end local i = 1 local tbl = {} if args[argname] and not disallowUnnamedFirst then tbl[1] = args[argname] i = 2 end while args[argname .. i] or i <= max do tbl[i] = args[argname .. i] i = i + 1 end if not next(tbl) then return nil end return tbl end function p.numberedArgsToList(args, argname, disallowUnnamedFirst, max, sep, removeEmpty) local tbl = p.numberedArgsToTable(args, argname, disallowUnnamedFirst, max) if removeEmpty then util_table.removeFalseEntries(tbl, max) elseif max then for k = 1, max do tbl[k] = tbl[k] or '' end end return table.concat(tbl, sep or ',') end function p.splitAndMap(str, sep, f, ...) if not sep then sep = '%s*,%s*' end local tbl = util_text.split(str,sep) if f then return util_table.mapInPlace(tbl, f, ...) else return tbl end end function p.splitMapConcat(str, sep, f, sep2) if not str then return nil end if not sep2 then sep2 = '' end local tbl = p.splitAndMap(str, sep, f) return table.concat(tbl, sep2) end function p.ifArg(arg, display) if not arg then return false end return display end function p.splitAllArgs(input, fieldlist, sep) local ret = {} for i, row in ipairs(input) do ret[i] = p.splitArgs(row, fieldlist, sep) ret[i].index = i end return ret end function p.splitArgs(input, fieldlist, sep) if not input or input == '' then return end sep = sep or '%s*;;;%s*' local result = {} local inputTbl = util_text.split(input,sep) for i, v in ipairs(fieldlist) do if not inputTbl[i] then error(('Missing parameter %s - maybe wrong child template?'):format(v)) end if inputTbl[i] ~= '' then result[v] = inputTbl[i] end end return result end function p.splitArgsArray(input, fieldlist, outersep, innersep) if not input or input == '' then return {} end outersep = outersep or '%s*:::%s*' return p.splitAndMap(input, outersep, p.splitArgs, fieldlist, innersep) end return p
该页面使用的模板:
模块:ArgsUtil/doc
(
查看源代码
)
返回至
模块:ArgsUtil
。
导航菜单
个人工具
登录
名字空间
模块
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
随机页面
最近更改
最新文件
常用
上传多个文件
工具
链入页面
相关更改
特殊页面
页面信息