Modul:Yesno
Ta modul zagotavlja poenoten vmesnik za procesiranje boolean ali booleanu podobne stringe. Medtem ko Lua dovoljuje true
in false
boolena vrednosti, lahko wikikoda izrazi boolena vrednosti s pomočjo strinkov kot so "yes", "no" ali "da", "ne", itd. Ta modul obdela stringe tega tipa in jih vrne v boolean za obdelavo v Lua. Vrača tudi nil
vrednosti kot nil
, tako da se omogoča razlikovanje med nil
in false
. Modul sprejme tudi druge vhodne strukture, t.j boolean, števila, tabele in funkcije. Če vhodna vrednost ni pravilno prepoznana kot boolean ali nil
, je možno določiti tudi privzeto (default) izhodno vrednost.
Sintaksa
[uredi kodo]yesno(vrednost, default)
vrednost
je vrednost, ki se bo preverila. Boolean ali booleanu podobni vhodni stringi (glej spodaj), se bodo vedno vrednotili kot true
, false
, in nil
se bo vedno vrednotil kot nil
. Druge vrednosti bodo privzele prednastavljeno vrednostdefault
.
Uporaba
[uredi kodo]Ta modul lahko uporabite le znotraj drugega modula, za običajne wiki strani namesto tega uporabite predlogo {{dane}}.
local yesno = require('Modul:Yesno')
Nekatere vhodne vrednosti vedno vrnejo true
, in nekatere vedno vrnejo false
. nil
vrednost vedno vrne nil
.
-- Tile vedno vrnejo true:
yesno('da')
yesno('d')
yesno('yes')
yesno('y')
yesno('true')
yesno('1')
yesno(1)
yesno(true)
-- Tile vedno vrnejo false:
yesno('ne')
yesno('no')
yesno('n')
yesno('false')
yesno('0')
yesno(0)
yesno(false)
-- Nil vrednosti vedno vrnejo nil:
yesno(nil)
String vrednosti so pred primerjavo pretvorjene v male črke:
-- Tile vedno vrnejo true:
yesno('Da')
yesno('dA')
yesno('DA')
yesno('D')
yesno('Yes')
yesno('YES')
yesno('yEs')
yesno('Y')
yesno('tRuE')
-- Tile vedno vrnejo false:
yesno('Ne')
yesno('nE')
yesno('NE')
yesno('No')
yesno('NO')
yesno('nO')
yesno('N')
yesno('fALsE')
Določite lahko privzeto vrednost, če vhodna vrednost ne ustreza nobeni izmed zgoraj naštetim. Če privzete vrednosti ne določite, bo modul za te vrednosti vrnil nil
.
-- Tile bodo vrnili nil:
yesno('foo')
yesno({})
yesno(5)
yesno(function() return 'This is a function.' end)
-- Tile bodo vrnili true:
yesno('foo', true)
yesno({}, true)
yesno(5, true)
yesno(function() return 'This is a function.' end, true)
-- Tile bodo vrnili "bar":
yesno('foo', 'bar')
yesno({}, 'bar')
yesno(5, 'bar')
yesno(function() return 'This is a function.' end, 'bar')
Bodite pozorni na to, da tudi prazen string deluje na podoben način:
yesno('') -- Vrne nil.
yesno('', true) -- Vrne true.
yesno('', 'bar') -- Vrne "bar".
Čeprav se prazen string v wikibesedilu običajno obravnava kot false, se v Lua obravnava kot true.
Zgornja dokumentacija je vključena iz Modul:Yesno/dok. (uredi | zgodovina) Urejevalci lahko preizkušate ta modul v peskovniku (uredi | primerjava) in testnihprimerih (uredi). Prosimo, da dodate kategorije v /dok podstran. Podstrani te predloge. |
-- 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 val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or val == 'da'
or val == 'd'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or val == 'ne'
or tonumber(val) == 0
then
return false
else
return default
end
end