模块:Yesno

来自萌娘共享
跳转至: 导航搜索

简介

这个模块提供一个统一的布尔式输入界面。虽然Lua语言支持布尔式,但是维基代码只支持通过类似“yes”和“no”这样的字符串来表达布尔式。这个模块的作用就是将这类字符串转换为Lua语言中的布尔式。它同样可以返回无效的nil,从而将nil与false区分开来。这个模块同样支持其他的lua元素,比如布尔式、数字、表和函数。如果输入的值无法返回布尔式或者nil值,它同样可以返回一个默认值。

语法

yesno(value, default)

value是一个待测参数。布尔式一般由true和false两个值构成。空对象为nil。其他值则会返回default参数。

用法

首先,载入模块。注意,它只能为其他Lua模块调用而不能为模板调用。

local yesno = require('Module:Yesno')


-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
    val = type(val) == 'string' and mw.ustring.lower(val) or val -- put in lower case
    if val == nil then
        return nil
    elseif val == false or val == 'no' or val == 'n' or val == 'false' or tonumber(val) == 0 then
        return false
    elseif val == true or val == 'yes' or val == 'y' or val == 'true' or tonumber(val) == 1 then
        return true
    else
        return default
    end
end