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

-- Den här modulen implementerar {{Brittiskt regeringsår}}. Den konverterar gregorianska år
-- till motsvarande engelska eller brittiska regeringsår.
 
local data = mw.loadData( 'Modul:Brittiskt regeringsår/Data' )
 
local p = {}
 
function p.konvertering( frame )
    local inputYear
    if frame == mw.getCurrentFrame() then
        inputYear = frame:getParent().args[ 1 ]
        local frameArgsYear = frame.args[ 1 ]
        if frameArgsYear then
            inputYear = frameArgsYear
        end
    else
        inputYear = frame
    end
 
    if type( inputYear ) ~= 'number' then
        inputYear = tonumber( inputYear )
    end
    if not inputYear then
        return "''N/A''"
    end
    local currentYear = tonumber( mw.language.getContentLanguage():formatDate( 'Y' ) )
    if inputYear < 1066 or inputYear > currentYear then
        return "''N/A''"
    end
 
    for _, t in ipairs( data ) do
        local dataYear = t.year
        if inputYear >= dataYear then
            local startYear = t.startYear
            local currentRegnalYear = inputYear - dataYear + startYear
            local linkCurrent = t.linkCurrent
            local prevEndYear = t.prevEndYear
            local linkPrev = t.linkPrev
            local note = t.note
 
            if inputYear > dataYear then
                return mw.ustring.format(
                    '%d&nbsp;%s&nbsp;–&nbsp;%d&nbsp;%s%s',
                    currentRegnalYear - 1, linkCurrent, currentRegnalYear, linkCurrent, note or ''
                )
            elseif inputYear == dataYear and prevEndYear and linkPrev then
                return mw.ustring.format(
                    '%d&nbsp;%s&nbsp;–&nbsp;%d&nbsp;%s%s',
                    prevEndYear, linkPrev, currentRegnalYear, linkCurrent, note or ''
                )
            else
                return mw.ustring.format(
                    '%d&nbsp;%s%s',
                    currentRegnalYear, linkCurrent, note or ''
                )
            end
        end
    end
end
 
return p