Module:Yesno
Бұл модуль логикалық немесе логикалық тәрізді кірістерді өңдеуге арналған бірыңғай интерфейсті ұсынады. Lua true
және Үлгі:Luafalse логикалық мәндерін пайдалануға мүмкіндік береді, ал вики-белгілеу арқылы жазылған шаблондар көбінесе "иә" және "жоқ"сияқты белгілерді қолданады. Модуль ұқсас жолдарды түрлендіреді және Lua-да қолдануға жарамды логикалық мән береді. Сонымен қатар, қайтарылатын мән Үлгі:Luanil мүмкін. Lua-ның басқа құрылымдары, соның ішінде логикалық айнымалылар, сандар, кестелер және функциялар кіріс ретінде пайдаланылуы мүмкін. Сонымен қатар, әдепкі қайтару мәнін орнатуға болады.
= Синтаксис =
өңдеуyesno(value, default)
value< / code — - тексерілетін мән. Логикалық және ұқсас кірістер әрқашан
true
немесе Үлгі:Luafalse, Үлгі:Luanil Үлгі:Luanil қайтарады. Қалған жағдайлар default< / code > сәйкес келеді.
= Пайдалану =
өңдеу
Бастау үшін модульді жүктеңіз. Мұны тек басқа модульдерден жасауға болатындығын ескеріңіз.
local yesno = require('Module:Yesno')
Кейбір мәндер әрқашан true
, ал басқалары Үлгі:Luafalse қайтарады. Үлгі:Luanil әрқашан Үлгі:Luanil қайтарады.
-- Әрқашан шындықты қайтарыңыз:
yesno('yes')
yesno('y')
yesno('true')
yesno('t')
yesno ('иә')
yesno ('d')
yesno('+')
yesno('1')
yesno(1)
yesno(true)
-- Әрқашан жалған қайтарады:
yesno('no')
yesno('n')
yesno('false')
yesno('f')
yesno ('жоқ')
yesno ('N')
yesno('-')
yesno('0')
yesno(0)
yesno(false)
-- nil әрқашан nil қайтарады:
yesno(nil)
Жол мәндері төменгі регистрге алдын ала түрлендіріледі:
-- Әрқашан шындықты қайтарыңыз:
yesno('Yes')
yesno('YES')
yesno('yEs')
yesno('Y')
yesno('tRuE')
-- Әрқашан жалған қайтарады:
yesno('No')
yesno('NO')
yesno('nO')
yesno('N')
yesno('fALsE')
Егер yesno жоғарыда айтылғандардан өзгеше аргументті қабылдаса, сіз әдепкі мәнді орната аласыз. Егер ол орнатылмаған болса, олар үшін Үлгі:Luanil қайтарылады.
-- nil қайтару:
yesno('foo')
yesno({})
yesno(5)
yesno(function() return 'This is a function.' end)
-- true қайтару:
yesno('foo', true)
yesno({}, true)
yesno(5, true)
yesno(function() return 'This is a function.' end, true)
-- қайтару "бар":
yesno('foo', 'bar')
yesno({}, 'bar')
yesno(5, 'bar')
yesno(function() return 'This is a function.' end, 'bar')
Бос жолды беру кезінде мінез-құлыққа назар аударыңыз:
yesno('') -- Returns nil.
yesno('', true) -- Returns true.
yesno('', 'bar') -- Returns "bar".
Викитекстегі бос жол Үлгі:Luafalse сәйкес келсе де, Луа оған true
сәйкес келеді. Модуль де солай істейді. Сондықтан болдырмау үшін осындай қателіктер бос жолдар болуы тиіс отсеиваться қолдану осы модуль.< / includeonly>
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and mw.ustring.lower(val) or val
if val == nil then
return nil
elseif val == true
or val == 'yes' or val == 'иә'
or val == 'y'
or val == 'true' or val == 'дұрыс'
or val == 't'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no' or val == 'жоқ'
or val == 'n'
or val == 'false' or val == 'қате'
or val == 'f'
or val == 'емес'
or tonumber(val) == 0
then
return false
else
return default
end
end