Module:දශක පරික්ෂාව

From Wikisource
Jump to navigation Jump to search

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


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 == "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+)s[ ]*[B]*[C]*[E]*$")
                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 m
        else
            m = input:match("^(%d+) වන දශකය$")
            if m ~= nil then
                return m
            else
                m = input:match("^(%d+)s[ ]*[B]*[C]*[E]*$")
                if m ~= nil then
                    return m
                end
            end
        end
        return "FALSE"
    elseif func == "1" then
        m = input:match("^ක්‍රිස්තු පූර්ව (%d+) වන දශකය$")
        if m ~= nil then
            return (-1 * ((m / 10) +1))
        else
            m = input:match("^(%d+) වන දශකය$")
            if m ~= nil then
                return (m / 10)
            else
                m = input:match("^(%d+)s[ ]*[B]*[C]*[E]*$")
                if m ~= nil then
                    if input:match("^.*BCE.*$") then
                        return (-1 * ((m / 10) +1))
                    else
                        return (m / 10)
                    end
                end
            end
        end
        return "FALSE"
        -- return "දෝෂය: තවම සාදා අවසන් කොට නොමැත."
    elseif func == "0" then
        m = input:match("^ක්‍රිස්තු පූර්ව (%d+) වන දශකය$")
        if m ~= nil then
            return "ක්‍රිස්තු පූර්ව " .. m
        else
            m = input:match("^(%d+) වන දශකය$")
            if m ~= nil then
                return m
            else
                m = input:match("^(%d+)s[ ]*[B]*[C]*[E]*$")
                if m ~= nil then
                    if input:match("^.*BCE.*$") then
                        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