მოდული:ქართული ანბანი

შეგიძლიათ შექმნათ დოკუმენტაცია ამ მოდულისათვის: მოდული:ქართული ანბანი/ინფო

-- მოდული რიცხვებისა და ქართული ასოების რიცხვითი მნიშვნელობების ორმხრივი გადაყვანისათვის.
local p = {}

function p.to_digital(frame) -- ქართული ასოების გადაყვანა რიცხვებში
    local georgianText = frame.args[1]
    if not georgianText then
        return "შეცდომა: შეიყვანეთ ქართული ასოები"
    end

    local georgianToDigitalMap = {
        units = {["ა"] = 1, ["ბ"] = 2, ["გ"] = 3, ["დ"] = 4, ["ე"] = 5, ["ვ"] = 6, ["ზ"] = 7, ["ჱ"] = 8, ["თ"] = 9},
        tens = {["ი"] = 1, ["კ"] = 2, ["ლ"] = 3, ["მ"] = 4, ["ნ"] = 5, ["ჲ"] = 6, ["ო"] = 7, ["პ"] = 8, ["ჟ"] = 9},
        hundreds = {["რ"] = 1, ["ს"] = 2, ["ტ"] = 3, ["ჳ"] = 4, ["ფ"] = 5, ["ქ"] = 6, ["ღ"] = 7, ["ყ"] = 8, ["შ"] = 9},
        thousands = {["ჩ"] = 1, ["ც"] = 2, ["ძ"] = 3, ["წ"] = 4, ["ჭ"] = 5, ["ხ"] = 6, ["ჴ"] = 7, ["ჯ"] = 8, ["ჰ"] = 9},
        ten_thousands = {["ჵ"] = 1}
    }

    local result = 0
    local places = {"units", "tens", "hundreds", "thousands", "ten_thousands"}

    for i = 1, #georgianText do
        local char = mw.ustring.sub(georgianText, i, i)
        for _, place in ipairs(places) do
            local placeValue = georgianToDigitalMap[place][char]
            if placeValue then
                result = result * 10 + placeValue
                break
            end
        end
    end

    return result
end

function p.to_georgian(frame) -- რიცხვების გადაყვანა ქართულ ასოებში
    local numericValue = tonumber(frame.args[1])
    if not numericValue then
        return "შეცდომა: შეიყვანეთ ციფრები"
    end

    local digitalToGeorgianMap = {
        units = {"ა", "ბ", "გ", "დ", "ე", "ვ", "ზ", "ჱ", "თ"},
        tens = {"ი", "კ", "ლ", "მ", "ნ", "ჲ", "ო", "პ", "ჟ"},
        hundreds = {"რ", "ს", "ტ", "ჳ", "ფ", "ქ", "ღ", "ყ", "შ"},
        thousands = {"ჩ", "ც", "ძ", "წ", "ჭ", "ხ", "ჴ", "ჯ", "ჰ"},
        ten_thousands = {"ჵ"}
    }

    local result = ""
    local places = {"units", "tens", "hundreds", "thousands", "ten_thousands"}
    local remainingValue = numericValue

    for _, place in ipairs(places) do
        local placeValue = remainingValue % 10
        if placeValue > 0 then
            result = digitalToGeorgianMap[place][placeValue] .. result
        end
        remainingValue = math.floor(remainingValue / 10)
    end

    return result
end

return p