Hoppa till innehållet

Modul:Armeniska siffror

Från Wikipedia

Dokumentationen för denna modul kan skapas på Modul:Armeniska siffror/dok

-- Denna modul implementerar {{Armeniska siffror}}. Den omvandlar tal till gamla armeniska siffror, fungerar för tal från 1 till 29999.

local p = {}

function p.konvertering( frame )
    local num
    if frame == mw.getCurrentFrame() then
        num = frame:getParent().args[ 1 ]
        local frameArgsNum = frame.args[ 1 ]
        if frameArgsNum then
            num = frameArgsNum
        end
    else
        num = frame
    end

    if type( num ) ~= 'number' then
        num = tonumber( num )
    end
    if not num then return end
    num = math.floor( num )
    if num < 1 or num > 29999 then return end
    
    local numerals = {
        { 20000, "Ֆ" }, { 10000, "Օ" },
        { 9000, "Ք" },  { 8000, "Փ" },  { 7000, "Ւ" },  { 6000, "Ց" },  { 5000, "Ր" },  { 4000, "Տ" },  { 3000, "Վ" },  { 2000, "Ս" },  { 1000, "Ռ" },
        { 900, "Ջ" },   { 800, "Պ" },   { 700, "Չ" },   { 600, "Ո" },   { 500, "Շ" },   { 400, "Ն" },   { 300, "Յ" },   { 200, "Մ" },   { 100, "Ճ" },
        { 90, "Ղ" },    { 80, "Ձ" },    { 70, "Հ" },    { 60, "Կ" },    { 50, "Ծ" },    { 40, "Խ" },    { 30, "Լ" },    { 20, "Ի" },    { 10, "Ժ" },
        { 9, "Թ" },     { 8, "Ը" },     { 7, "Է" },     { 6, "Զ" },     { 5, "Ե" },     { 4, "Դ" },     { 3, "Գ" },     { 2, "Բ" },     { 1, "Ա" }
    }
    
    local ret = {}
    for _, v in ipairs( numerals ) do
        local val, letter = unpack( v )
        while num >= val do
            num = num - val
            table.insert( ret, letter )
        end
    end
    return table.concat( ret )
end

return p