Module:Roman

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

-- This module implements {{Roman}}.local p = {}-- This function implements the {{overline}} template.local function overline(s)    return mw.ustring.format( '<span style="text-decoration:overline;">%s</span>', s )end-- Gets the Roman numerals for a given numeral table. Returns both the string of-- numerals and the value of the number after it is finished being processed.local function getLetters(num, t)    local ret = {}    for _, v in ipairs(t) do        local val, letter = unpack(v)        while num >= val do            num = num - val            table.insert(ret, letter)        end    end    return table.concat(ret), numend-- The main control flow of the module.local function _main(args)    -- Get input and exit displaying nothing if the input is empty.    if args[1] == nil then return end    local num = tonumber(args[1])    if not num or num < 0 or num == math.huge then    error('Invalid number ' .. args[1], 2)    elseif num == 0 then        return 'N'    end    -- Return a message for numbers too big to be expressed in Roman numerals.    if num >= 5000000 then        return args[2] or 'N/A'    end    local ret = ''    -- Find the Roman numerals for the large part of numbers.    -- 23 April 2016 - tweaked to >= 4000 to accept big Roman 'IV'    -- The if statement is not strictly necessary, but makes the algorithm     -- more efficient for smaller numbers.    if num >= 4000 then        local bigRomans = {            { 1000000, 'M' },            { 900000, 'CM' }, { 500000, 'D' }, { 400000, 'CD' }, { 100000, 'C' },            {  90000, 'XC' }, {  50000, 'L' }, {  40000, 'XL' }, {  10000, 'X' },            {   9000, 'IX' }, {   5000, 'V' }, {   4000, 'IV' },        }        local bigLetters        bigLetters, num = getLetters(num, bigRomans)        ret = overline(bigLetters)    end    -- Find the Roman numerals for numbers less than the big Roman threshold.    local smallRomans = {        { 1000, 'M' },        { 900, 'CM' }, { 500, 'D' }, { 400, 'CD' }, { 100, 'C' },        {  90, 'XC' }, {  50, 'L' }, {  40, 'XL' }, {  10, 'X' },        {   9, 'IX' }, {   5, 'V' }, {   4, 'IV' }, {   1, 'I' }    }    local smallLetters = getLetters( num, smallRomans )    ret = ret .. smallLetters    if args.fraction == 'yes' then        -- Find the Roman numerals for the fractional parts of numbers.        -- If num is not a whole number, add half of 1/1728 (the smallest unit) to equate to rounding.        -- Ensure we're not less than the smallest unit or larger than 1 - smallest unit        -- to avoid getting two "half" symbols or no symbols at all        num = num - math.floor(num)        if num ~= 0 then            num = math.max(1.1/1728, math.min(1727.1/1728, num + 1/3456))        end        local fractionalRomans = {            { 1/2, 'S' }, { 5/12, "''':'''•''':'''" }, { 1/3, "'''::'''" },            { 1/4, "''':'''•" }, { 1/6, "''':'''" }, { 1/12, '•' },            { 1/24, 'Є' }, { 1/36, 'ƧƧ' }, { 1/48, 'Ɔ' }, { 1/72, 'Ƨ' }, { 1/144, '<s>Ƨ</s>' },            { 1/288, '℈' }, { 1/1728, '»' },        }        local fractionalLetters = getLetters(num, fractionalRomans)                ret = ret .. fractionalLetters    end    return retendfunction p.main(frame)    -- If called via #invoke, use the args passed into the invoking    -- template, or the args passed to #invoke if any exist. Otherwise    -- assume args are being passed directly in from the debug console    -- or from another Lua module.    local origArgs    if frame == mw.getCurrentFrame() then        origArgs = frame:getParent().args        for k, v in pairs(frame.args) do            origArgs = frame.args            break        end    else        origArgs = frame    end    -- Trim whitespace and remove blank arguments.    local args = {}    for k, v in pairs(origArgs) do        if type( v ) == 'string' then            v = mw.text.trim(v)        end        if v ~= '' then            args[k] = v        end    end        -- exit if not given anything    if args == nil or args == {} then return end    -- Given mathematical expression, simplify to a number    if type(args[1]) == 'string' then        args[1] = mw.ext.ParserFunctions.expr(args[1])    end    return _main(args)endreturn p
"https:https://www.search.com.vn/wiki/index.php?lang=ta&q=Module:Roman&oldid=3532573" இலிருந்து மீள்விக்கப்பட்டது
🔥 Top keywords: முதற் பக்கம்சிறப்பு:Searchஅண்ணாமலை குப்புசாமிசுப்பிரமணிய பாரதிதமிழ்பதினெண் கீழ்க்கணக்குதிருக்குறள்பாரதிதாசன்பயில்வான் ரங்கநாதன்சாகித்ய அகாதமி விருது பெற்ற தமிழ் எழுத்தாளர்கள்மயக்கம் என்னசங்க இலக்கியம்ஜி. வி. பிரகாஷ் குமார்எட்டுத்தொகைசிலப்பதிகாரம்தமிழ்நாட்டின் மாவட்டங்கள்சுசித்ராவிநாயகர் அகவல்ஐம்பெருங் காப்பியங்கள்பெண் தமிழ்ப் பெயர்கள்சத்திமுத்தப் புலவர்சிறப்பு:RecentChangesதமிழ்நாடுஇந்திய அரசியலமைப்புசவுக்கு சங்கர்இந்திய வானியலின் 27 நட்சத்திரங்கள்சைந்தவி (பாடகி)தஞ்சைப் பெருவுடையார் கோயில்தமிழ்த் திரைப்படங்களின் பட்டியல் (ஆண்டு வரிசை)உலா (இலக்கியம்)சாகித்திய அகாதமி விருது பெற்ற தமிழ் நூல்கள்ஈ. வெ. இராமசாமிஆ. ப. ஜெ. அப்துல் கலாம்நாலடியார்2024 இந்தியப் பொதுத் தேர்தல்தமிழ் நாடக வரலாறுகாளமேகம்யூடியூப்கம்பராமாயணம்