Module:Qud time

local p = {} local text_util = require('Module:Text Utility')

function p.minutesToTime(minute) if (minute >= 0 and minute < 26) then return "Beetle Moon Zenith" elseif (minute < 151) then return "Waning Beetle Moon" elseif (minute < 301) then return "Shallows" elseif (minute < 451) then return "Harvest Dawn" elseif (minute < 576) then return "Waxing Salt Sun" elseif (minute < 626) then return "High Salt Sun" elseif (minute < 751) then return "Waning Salt Sun" elseif (minute < 901) then return "Hindsun" elseif (minute < 1051) then return "Jeweled Dusk" elseif (minute < 1176) then return "Waxing Beetle Moon" end return "Beetle Moon Zenith" end

function p.isDay(minute) if minute >= 325 and minute < 1000 then return true else return false end end

function p.dayEnding(num) local a = num%10 local ending = { [1] = 'st', [2] = 'nd', [3] = 'rd', [4] = 'th', [5] = 'th', [6] = 'th', [7] = 'th', [8] = 'th', [9] = 'th', [0] = 'th' } return ending[a] or '' end

function p.qudifyTime(year, days, hour, mins) frame = mw.getCurrentFrame local qudmonth = 'Uru Ux' local quddayint = 0 local qudperiodint = math.floor((hour + (mins/60)) * 50 ) local qudsegment = p.minutesToTime(qudperiodint) local morningorevening = 'evening' if p.isDay(qudperiodint) == true then morningorevening = 'morning' end if days < 30 then qudmonth = 'Nivvun Ut' quddayint = days elseif days < 60 then qudmonth = 'Iyur Ut' quddayint = days - 29 elseif days < 90 then qudmonth = 'Simmun Ut' quddayint = days - 59 elseif days < 120 then qudmonth = 'Tuum Ut' quddayint = days - 89 elseif days < 150 then qudmonth = 'Ubu Ut' quddayint = days - 119 elseif days < 180 then qudmonth = 'Uulu Ut' quddayint = days - 149 elseif days < 185 then qudmonth = 'Ut yara Ux' quddayint = days - 179 elseif days < 215 then qudmonth = 'Tishru i Ux' quddayint = days - 184 elseif days < 245 then qudmonth = 'Tishru ii Ux' quddayint = days - 214 elseif days < 275 then qudmonth = 'Kisu Ux' quddayint = days - 244 elseif days < 305 then qudmonth = 'Tebet Ux' quddayint = days - 274 elseif days < 335 then qudmonth = 'Shwut Ux' quddayint = days - 304 else quddayint = days - 334 end local qudday = tostring(quddayint) .. p.dayEnding(quddayint) local qudstring = frame:expandTemplate{ title = 'Qud time/format', args = { morningorevening=morningorevening, qudsegment=qudsegment, qudday=qudday, qudmonth=qudmonth} } return qudstring end

function p.getTime(frame) local timeArgNames= {'year', 'days', 'hour', 'mins'} frame = mw.getCurrentFrame local argslist = text_util.splitArgs(frame.args[1], timeArgNames, '-') local qudtime = p.qudifyTime(tonumber(argslist['year']), tonumber(argslist['days']), tonumber(argslist['hour']), tonumber(argslist['mins'])) return qudtime end

function p.test(frame) return p.qudifyTime(2019,318,22,47 ) end

return p