Module:Roman

From Heroes of Might and Magic: Olden Era Official Wiki
Revision as of 05:51, 13 July 2026 by Aurelain (talk | contribs) (Created page with "local p = {} function p.main(frame) local input if type(frame) == 'table' and type(frame.args) == 'table' then local args = frame.args[1] and frame.args or frame:getParent().args input = args[1] else input = frame end local n = tonumber(input) if not n or n < 1 or n > 3999 then return 'N/A' end local vals = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 } local symbols = { 'M', 'CM', 'D', 'CD'...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:Roman/doc

local p = {}

function p.main(frame)
    local input
    if type(frame) == 'table' and type(frame.args) == 'table' then
        local args = frame.args[1] and frame.args or frame:getParent().args
        input = args[1]
    else
        input = frame
    end

    local n = tonumber(input)
    if not n or n < 1 or n > 3999 then
        return 'N/A'
    end

    local vals = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }
    local symbols = { 'M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I' }
    local result  = ''
    for i, v in ipairs(vals) do
        while n >= v do
            result = result .. symbols[i]
            n = n - v
        end
    end

    return result
end

return p