User:Tirerim/sandbox/Module:Next Rat-Season Weekend

local p = {}

local function season_offset(current_season, future_season)

``` local seasons = {'Freeze-and-Fall' = 0, 'Lying-Longing' = 1, 'Candle-Canker' = 2, 'Wink-and-Wane' = 3, 'Vial-Vane' = 4, 'Take-and-Toil' = 5, 'Wine-Whisper' = 6, 'Rise-and-Rake' = 7, 'Nitre-Knife' = 8, 'Kifer-Caitiff' = 9, 'Skitter-Scatter' = 10, 'Dimmest-Dark' = 11}
local offset = ( seasons[future_season] - seasons[current_season] ) % 12
return offset
```

end

-- since we only care about whole days, we can just add/subtract days worth of seconds to/from epoch time local function rat_start_for_time(time)

``` local weekday = os.date("%w", time)
local friday = (5 - weekday) * 86400 + time
if (weekday == 1 and os.date("%H%M", time) < 1100) or weekday == 0 then
friday = friday - (7 * 86400)
end
return friday
```

end

local function date_for_offset(offset)

``` local current_time = os.time()
local start_day = rat_start_for_time(current_time) + (offset * 7 * 86400)
local end_day = start_day + (3 * 86400)
return os.date("%b %d", start_day) .. ' - ' .. os.date("%b %d", end_day)
```

end

function p.weekend(frame)

``` local current_season = frame[1]
local future_season = frame[2]
local offset = season_offset(current_season, future_season)
return date_for_offset(offset)
```

end

return p