Sari la conținut

Modul:Ordinal

Documentația acestui modul poate fi creată la Modul:Ordinal/doc

--[[  
 
Acest format adaugă sufixul ordinal corespunzător unui număr întreg dat. 

]]

local p = {}

local yesno     = require('Modul:Yesno') -- boolean value interpretation

--[[
Această funcție convertește un număr întreg într-un număr urmată de un indicator ordinal. 
Șirul care este returnat poate conține etichete HTML. 

Utilizare:
{{#invoke:Ordinal|ordinal|1=|sup=|gen=}}
{{#invoke:Ordinal|ordinal}} - folosește parametrii elementului care îl invocă
 
Parametrii
    1: Orice număr sau șir de caractere.
    sup: Setează ca da/nu pentru a activa sau dezactiva scrierea sufixelor ca superscript.
    gen: Setează ca m/f pentru a primi rezultatul corespunzător
]]
function p.ordinal(frame)
	local args = frame.args
    if args[1] == nil then
        args = frame:getParent().args
    end
    if args[1] == nil then
    	args[1] = "{{{1}}}"
    end
    return p._ordinal(args[1], yesno(args.sup), args.gen)
end

function p._ordinal(n, sup, gen)
	local x = tonumber(mw.ustring.match(n, "(%d*)%W*$"))
	local prefix = ""
	local suffix = ""
	-- If tonumber(n) worked:
	if x then
		if x == 1 and gen ~= "f" then
			return "întâi"
		elseif x == 1 and gen == "f" then
			suffix = "a"
		elseif x > 1 and gen == "f" then
			prefix = "a "
			suffix = "a"
		elseif x > 1 and gen ~= "f" then
			prefix = "al "
			suffix = "lea"
		end
	end
	if sup then
		suffix = "<sup>" .. suffix .. "</sup>"
	else
		suffix = "-" .. suffix
	end
	return prefix .. n .. suffix
end

return p