模块:Var
简介
该模块为一个操作wiki页面变量的快捷工具。
方法
get
[nil, boolean, number, string] var.get($string 变量名 [, $string 获取类型])
该方法获取一个变量的值,且按值进行一系列对应的转换并返回。
- 空字符串 => nil
- 字符串true => 布尔值true
- 字符串false => 布尔值false
- 开头非0的字符串十进制数字 => 数字
- 与以上条件均不匹配的字符串 => 原样返回
第二个参数获取类型目前仅支持一个参数:
- final:获取变量的最终值,等同于解析器函数
{{#var_final}}
getPlain
[string] var.getPlain($string 变量名 [, $string 获取类型])
同上,但没有值的转换。
set
[任何类型] var.set(变量名, 值)
设置一个变量的值,并返回设置的值。
remove
[string] var.remove(变量名)
删除一个变量,相当于var.set('变量名', '')
,并返回被删除变量的值。
如果单纯要进行删除,不需要被删除的值,建议使用var.set('变量名', '')
,因为remove方法会执行两次解析器函数(查询值+删除值)。
local frame = mw.getCurrentFrame()
local module = {
getPlain = function(key, type)
if type then
type = '_'..type
else
type = ''
end
return frame:callParserFunction("#var"..type, tostring(key))
end,
set = function(key, val)
frame:callParserFunction("#vardefine", tostring(key), tostring(val))
return val
end
}
module.get = function(key, type)
local val = module.getPlain(key, type)
if val == '' then return nil end
if val:find('^0') then return val end
if tonumber(val) then return tonumber(val) end
if var == 'true' then return true end
if var == 'false' then return false end
return val
end
module.remove = function(key)
local removedVal = module.getPlain(key)
module.set(key, "")
return removedVal
end
return module