Jump to content

Module:වසර පරික්ෂාව

From Wikisource

{{වසර පරික්ෂාව}} සඳහා අවශ්‍ය මොඩියුලය


local getArgs = require('Module:Arguments').getArgs
local p = {}

local function parikshaawa(args)
    local input = args["ආදානය"]
	local func = args["ශ්‍රිතය"]

    if input == nil then
        input = ""
    end
    if func == nil then
        func = "0"
    end

    if func == "4" then
        m = input:match("^ක්‍රිස්තු පූර්ව (%d+)$")
        if m ~= nil then
            return -1
        else
            m = input:match("^(%d+)$")
            if m ~= nil then
                if m == "0" then
                    -- 0 (බිංදුව) වසර සඳහා පිළිතුර 0 (බිංදුව) වෙයි
                    return m
                end
                return 1
            else
                m = input:match("^(%d+) BCE$")
                if m ~= nil then
                    return -1
                end
            end
        end
        -- ඉහත පරීක්ෂාවට හසු නොවේ නම් පිළිතුර 0 (බිංදුව) වෙයි.
        return 0
    elseif func == "3" then
        -- m = input:match("^[(ක්‍රිස්තු)]*[ ]*[(වර්ෂ|පූර්ව)]* (%d+) වන දශකය$")
        m = input:match("^ක්‍රිස්තු පූර්ව (%d+)$")
        if m ~= nil then
            return 1
        else
            m = input:match("^(%d+)$")
            if m ~= nil then
                return 1
            else
                m = input:match("^(%d+) BCE$")
                if m ~= nil then
                    return 1
                end
            end
        end
        -- ඉහත පරීක්ෂාවට හසු නොවේ නම් පිළිතුර 0 (බිංදුව) වෙයි.
        return 0
    elseif func == "2" then
        m = input:match("^ක්‍රිස්තු පූර්ව (%d+)$")
        if m ~= nil then
            return "ක්‍රිස්තු පූර්ව " .. ((math.ceil(m / 100))) .. " වන සියවස"
        else
            m = input:match("^(%d+)$")
            if m ~= nil then
                return ((math.ceil(m / 100))) .. " වන සියවස"
            else
                m = input:match("^(%d+) BCE$")
                if m ~= nil then
                    return "ක්‍රිස්තු පූර්ව " .. ((math.ceil(m / 100))) .. " වන සියවස"
                end
            end
        end
        return "FALSE"
    elseif func == "1" then
        m = input:match("^ක්‍රිස්තු පූර්ව (%d+)$")
        if m ~= nil then
            return "ක්‍රිස්තු පූර්ව " .. (((math.floor(m / 10))) * 10) .. " දශකය"
        else
            m = input:match("^(%d+)$")
            if m ~= nil then
                return ((math.floor(m / 10)) * 10) .. " දශකය"
            else
                m = input:match("^(%d+)[ ]*[B]*[C]*[E]*$")
                if m ~= nil then
                    if input:match("^.*BCE.*$") then
                        return "ක්‍රිස්තු පූර්ව " .. (((math.floor(m / 10))) * 10) .. " දශකය"
                    else
                        return ((math.floor(m / 10)) * 10) .. " දශකය"
                    end
                end
            end
        end
        return "FALSE"
        -- return "දෝෂය: තවම සාදා අවසන් කොට නොමැත."
    elseif func == "0" then
        m = input:match("^ක්‍රිස්තු පූර්ව (%d+)$")
        if m ~= nil then
            -- return "ක්‍රිස්තු පූර්ව " .. m
            return m
        else
            m = input:match("^(%d+)$")
            if m ~= nil then
                return m
            else
                m = input:match("^(%d+)[ ]*[B]*[C]*[E]*$")
                if m ~= nil then
                    if input:match("^.*BCE.*$") then
                        -- return "ක්‍රිස්තු පූර්ව " .. m
                        return m
                    else
                        return m
                    end
                end
            end
        end
        return "FALSE"
        -- return "දෝෂය: තවම සාදා අවසන් කොට නොමැත."
    else
        return func
        -- return "දෝෂය: ශ්‍රිතය සඳහා ලබා දී ඇති පැරාමිතිය හඳුනාගත නොහැකිය."
    end

	return retVal
end

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	return parikshaawa(args)
end

return p