Modul:Yesno

Iz Wikipedije, proste enciklopedije
Skoči na: navigacija, iskanje
Documentation icon Dokumentacija modula[predogled] [uredi] [zgodovina] [osveži]

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 | 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 | 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.

-- 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 == 'ne' or val == 'n' or val == 'false' or tonumber(val) == 0 then
        return false
    elseif val == true or val == 'yes' or val == 'y' or val == 'da' or val == 'd' or val == 'true' or tonumber(val) == 1 then
        return true
    else
        return default
    end
end