模块:Yesno

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

简介

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

语法

yesno(value, default)

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

用法

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

local yesno = require('Module:Yesno')


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