Pojdi na vsebino

Modul:Yesno

Iz Wikipedije, proste enciklopedije
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 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.

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