Saltar al contento

Modulo:Yesno

De Wikipedia, le encyclopedia libere
Info
Info
Documentation del modulo
Le documentation de iste modulo non existe ancora. Crea lo!

Le modification de iste modulo es limitate al usatores autoconfirmate

-- Function que permitte le tractamento consequente de entrata wikitexto booleanesc.
-- Copiate, traducite e adaptate de [[:en:Special:Permalink/948473803]]. Licentia: CC BY-SA 4.0.
-- Addite: un interfacie public pro [[Patrono:Bool]].

local yesno = {}

-- Normalisa un valor booleanesc fornite per le usator.
-- Restitue true pro ver, false pro false, nil pro un valor non valide.
local function normalisa(val)
	-- Nos conserva intentionalmente le valores anglese, ma adde los de interlingua.
	if type(val) == 'string' then
		val = val:lower()
	end
	if val == true 
		-- interlingua
		or val == 'si'
		or val == 's'
		or val == 'ver'
		or val == 'v'
		-- anglese
		or val == 'yes'
		or val == 'y'
		or val == 'true'
		or val == 't'
		or val == 'on'
		-- numeric
		or tonumber(val) == 1
	then
		return true
	elseif val == false
		-- interlingua e anglese
		or val == 'no'
		or val == 'n'
		or val == 'false'
		or val == 'f'
		-- anglese
		or val == 'off'
		-- numeric
		or tonumber(val) == 0
	then
		return false
	end
	return nil
end

-- Interfacie public pro [[Patrono:Bool]].
function yesno.bool(quadro)
	local n = normalisa(quadro.args[1])
	if n == true then
		return '1'
	elseif n == false then
		return '0'
	elseif quadro.args[2] ~= nil and quadro.args[2] ~= '' then
		return quadro.args[2]
	end
	return '?'
end

-- Interfacie original de [[:en:Module:Yesno]].
-- Isto permitte: require('Module:Yesno')(val, predef)
setmetatable(yesno, {
	__call = function(_, val, predef)
		local n = normalisa(val)
		if n == nil then
			return predef
		end
		return n
	end
})

return yesno