]>
git.madduck.net Git - etc/awesome.git/blobdiff - src/timetable.lua
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
+local function unpack_tm ( tm )
+ return assert ( tm.year , "year required" ) ,
+ assert ( tm.month , "month required" ) ,
+ assert ( tm.day , "day required" ) ,
+ tm.hour or 12 ,
+ tm.min or 0 ,
+ tm.sec or 0
+end
+
local function normalise ( tm )
local function normalise ( tm )
- local sec = tm.sec or 0
- local min = tm.min or 0
- local hour = tm.hour or 12
- local day = assert ( tm.day , "day required" )
- local month = assert ( tm.month , "month required" )
- local year = assert ( tm.year , "year required" )
+ local year , month , day , hour , min , sec = unpack_tm ( tm )
min , sec = increment ( min , sec , 60 ) -- TODO: consider leap seconds?
hour , min = increment ( hour , min , 60 )
min , sec = increment ( min , sec , 60 ) -- TODO: consider leap seconds?
hour , min = increment ( hour , min , 60 )
+local timetable_mt = {
+}
+
+local function cast_timetable ( tm )
+ return setmetatable ( tm , timetable_mt )
+end
+
+local function new_timetable ( year , month , day , hour , min , sec )
+ return cast_timetable {
+ year = year ;
+ month = month ;
+ day = day ;
+ hour = hour ;
+ min = min ;
+ sec = sec ;
+ }
+end
return {
doomsday = doomsday ;
normalise = normalise ;
return {
doomsday = doomsday ;
normalise = normalise ;
+
+ new = new_timetable ;
+ cast = cast_timetable ;
+ timetable_mt = timetable_mt ;