Module:Armenian
Jump to navigation
Jump to search
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
This module implements {{Armenian}}. It converts numbers into old Armenian numerals, for numbers from 1-29999. Please see the template page for documentation.
-- This module implements {{Armenian}}. It converts numbers to old Armenian
-- numerals, for numbers from 1-29999.
local p = {}
function p.main( frame )
-- If we are being called from #invoke, then the number is the first positional
-- argument. If not, it is the frame parameter.
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
-- Convert the input to an integer if possible.
if type( num ) ~= 'number' then
num = tonumber( num )
end
if not num then return '' end
num = math.floor( num )
-- Exit if the number is not expressible in Armenian numerals.
-- FIXME: Check if Armenian numerals can really be made 10,000x bigger through
-- overlining them as it says in our article. (That claim is unsourced.) If they
-- can, there is code at [[Module:Roman]] that can be stolen from to make it work.
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