Modul:URAA

Från Wikisource, det fria biblioteket.

Dokumentationen för denna modul kan skapas på Modul:URAA/dok

local p = {}
 
function p.main( frame )
    local h = {}
    h[1] = frame.args[1]
    h[2] = frame.args[2]
    h[3] = tonumber(os.date('%Y')) -- När anropas utifrån så används klockan, annars 
    return p.fritt(h)
end
 
function p.fritt( args )
    local result = ""
    if p.us_fritt( args )  == "Fritt" and p.eu_fritt( args ) == "Fritt" then
        result =  "Fritt"
    end
    return result
end
--function för att se om fritt i usa
function p.us_fritt( args )
 
    local forfattare_avliden = tonumber(args[1])
    local utgivningsar = tonumber(args[2])
    local innevarandear = tonumber(args[3])
    -- Defaultvärde för att det är fritt 
    local fritt = false 
 
    -- Om utgivningsår är före 1923 eller för mer än 95 år sedan, fritt i USA
    if utgivningsar < 1923 or utgivningsar < innevarandear - 95 then
        fritt = true
    else
        --om inte fritt enl ovanstående men om författare död före 1926 så ändå fritt i USA
        if forfattare_avliden < 1926 then
            fritt = true
        end
    end
 
    -- Om utgiven efter 1977 och författare avliden för mer än 70 år sedan, fritt även i USA
    if utgivningsar > 1977 and forfattare_avliden < innevarandear - 70 then
        fritt = true
    end
 
    local result = ""
    if fritt then
        result =  "Fritt"
    end
    return result
end
--function för att se om fritt i Sverige/Finland
function p.eu_fritt( args )
 
    local forfattare_avliden = tonumber(args[1])
    local utgivningsar = tonumber(args[2])
    local innevarandear = tonumber(args[3])
    -- Defaultvärde för att det är fritt 
    local fritt = false 
 
    --Om författare avliden för mindre än 70 år sedan alltid CR
    if forfattare_avliden < innevarandear - 70 then
        fritt = true
    end
    -- Om utgivning < 25 år sedan alltid CR
    if utgivningsar > innevarandear -25 then
        fritt = false
    end
 
    local result = ""
    if fritt then
        result =  "Fritt"
    end
    return result
end

--Funktion som med hjälp av ovanstående funktion räknar fram vilket år det blir fritt
function p.frinar( frame )
    
    local h = {}
    --h[1] är författare_avliden
    h[1] = frame.args[1]
    --h[2] är utgivningsår
    h[2] = frame.args[2]
    --h[3] är en siffra som adderas ett år i taget från år 1900, tills det blir rätt år.
    h[3] = 1900
    while p.fritt ( h ) ~= "Fritt" do
        h[3] = h[3] +1
    end
    --slutresutatet av denna funktion är vilket år verket är fritt
    return h[3]
end
 
--funktion som avslöjar om friheten blev senaste året eller inte
function p.nu( frame )
    local h1 = {}
    h1[1] = frame.args[1]
    h1[2] = frame.args[2]
    h1[3] = tonumber(os.date('%Y'))
    local h2 = {}
    h2[1] = frame.args[1]
    h2[2] = frame.args[2]
    h2[3] = tonumber(os.date('%Y')) - 1
    local res = ""
    if p.fritt( h1 ) ~= p.fritt( h2 ) then
        res = "Fritt senaste året"
    end
    return  res
end

return p