Megapolis Wiki
Advertisement

Documentation for this module may be created at Module:Duration/doc

local p = {}

local lang = mw.getContentLanguage()

function p.timeConvert(timeR,raw)
    local timeunit

    if string.len(timeR) > 7 and string.sub(timeR,-7) == 'minutes' then
        timeR = string.gsub(timeR,'minutes','')
        timeunit = tonumber(timeR)*60
    elseif string.len(timeR) > 7 and string.sub(timeR,-7) == 'seconds' then
        timeR = string.gsub(timeR,'seconds','')
        timeunit = tonumber(timeR)
    elseif string.len(timeR) > 6 and string.sub(timeR,-6) == 'minute' then
        timeR = string.gsub(timeR,'minute','')
        timeunit = tonumber(timeR)*60
    elseif string.len(timeR) > 5 and  string.sub(timeR,-5) == 'hours' then
        timeR = string.gsub(timeR,'hours','')
        timeunit = tonumber(timeR)*3600
    elseif string.len(timeR) > 4 and string.sub(timeR,-4) == 'hour' then
        timeR = string.gsub(timeR,'hour','')
        timeunit = tonumber(timeR)*3600
    elseif string.len(timeR) > 3 and string.sub(timeR,-3) == 'min' then
        timeR = string.gsub(timeR,'min','')
        timeunit = tonumber(timeR)*60
    elseif string.len(timeR) > 3 and string.sub(timeR,-3) == 'hrs' then
        timeR = string.gsub(timeR,'hrs','')
        timeunit = tonumber(timeR)*3600
    elseif string.sub(timeR,-1) == 's' then
        timeR = string.gsub(timeR,'s','')
        timeunit = tonumber(timeR)
    elseif string.sub(timeR,-1) == 'm' then
        timeR = string.gsub(timeR,'m','')
        timeunit = tonumber(timeR)*60
    elseif string.sub(timeR,-1) == 'h' then
        timeR = string.gsub(timeR,'h','')
        timeunit = tonumber(timeR)*3600
    else
        timeunit = tonumber(timeR)*3600
    end
    
    if raw == 'raw' then
        returnText = timeunit
    elseif raw == 'h' then
        returnText = timeunit/3600
    else
        returnText = p.duration(timeunit)
    end
    return returnText
end


function p.main(frame)
    local timeunit = tonumber(frame.args[1]) or 0
    return p.duration(timeunit)
end

function p.duration(timeunit,short)
    local timetext
    if short == 'yes' then
        if timeunit == 0 then
            timetext = 'Time not found[[Category:Time Error]]'
        elseif timeunit>0 and timeunit<60 then
            timetext = timeunit..'s'
        elseif timeunit>=60 and timeunit<3600 then
            if timeunit % 60 == 0 then
                timetext = (timeunit/60)..'min'
            else
                timetext = math.floor(timeunit/60)..'min '..(timeunit-math.floor(timeunit/60)*60)..'s'
            end
        elseif 3600 <= timeunit then
            if timeunit % 3600 == 0 then
                timetext = (timeunit/3600)..'hr'
            else
                if timeunit-math.floor(timeunit/3600)*3600 < 60 then
                    timetext = math.floor(timeunit/3600)..'hr '..(timeunit-math.floor(timeunit/3600)*3600)..'s'
                elseif timeunit % 60 == 0 then
                    timetext = math.floor(timeunit/3600)..'hr '..math.floor((timeunit-math.floor(timeunit/3600)*3600)/60)..'min'
                else
                    timetext = math.floor(timeunit/3600)..'hr '..math.floor((timeunit-math.floor(timeunit/3600)*3600)/60)..'min '..(timeunit-(math.floor(timeunit/3600)*3600)-math.floor((timeunit-(math.floor(timeunit/3600)*3600))/60)*60) ..'s'
                end
            end
        end
    else
        if timeunit == 0 then
            timetext = 'Time not found[[Category:Time Error]]'
        elseif timeunit>0 and timeunit<60 then
            timetext = timeunit..' '..lang:convertPlural(timeunit,'second','seconds')
        elseif timeunit>=60 and timeunit<3600 then
            if timeunit % 60 == 0 then
                timetext = (timeunit/60)..' '..lang:convertPlural((timeunit/60),'minute','minutes')
            else
                timetext = math.floor(timeunit/60)..' '..lang:convertPlural((timeunit/60),'minute','minutes')..' '..(timeunit-math.floor(timeunit/60)*60)..' '..lang:convertPlural((timeunit-math.floor(timeunit/60)*60),'second','seconds')
            end
        elseif 3600 <= timeunit then
            if timeunit % 3600 == 0 then
                timetext = (timeunit/3600)..' '..lang:convertPlural((timeunit/3600),'hour','hours')
            else
                if timeunit-math.floor(timeunit/3600)*3600 < 60 then
                    timetext = math.floor(timeunit/3600)..' '..lang:convertPlural(math.floor(timeunit/3600),'hour','hours')..' '..(timeunit-math.floor(timeunit/3600)*3600)..' '..lang:convertPlural((timeunit-math.floor(timeunit/3600)*3600),'second','seconds')
                elseif timeunit % 60 == 0 then
                    timetext = math.floor(timeunit/3600)..' '..lang:convertPlural(math.floor(timeunit/3600),'hour','hours')..' '..math.floor((timeunit-math.floor(timeunit/3600)*3600)/60)..' '..lang:convertPlural(math.floor((timeunit-math.floor(timeunit/3600)*3600)/60),'minute','minutes')
                else
                    timetext = math.floor(timeunit/3600)..' '..lang:convertPlural(math.floor(timeunit/3600),'hour','hours')..' '..math.floor((timeunit-math.floor(timeunit/3600)*3600)/60)..' '..lang:convertPlural(math.floor((timeunit-math.floor(timeunit/3600)*3600)/60),'minute','minutes')..' '..(timeunit-(math.floor(timeunit/3600)*3600)-math.floor((timeunit-(math.floor(timeunit/3600)*3600))/60)*60) ..' '..lang:convertPlural(60*(((timeunit-math.floor(timeunit/3600)*3600)/60)-math.floor(((timeunit-math.floor(timeunit/3600)*3600)/60))),'second','seconds')
                end
            end
        end
    end
    return timetext
end

return p
Advertisement