X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/4bed62b35f023d4707b3e971889daded8a9d1442..ac89c4c58d68776dfec1a54c19077a58f1eb76c6:/luatz/tzinfo.lua?ds=sidebyside

diff --git a/luatz/tzinfo.lua b/luatz/tzinfo.lua
index fd3f5e8..75be0f1 100644
--- a/luatz/tzinfo.lua
+++ b/luatz/tzinfo.lua
@@ -1,9 +1,23 @@
 local gettime = require "luatz.gettime".gettime
+local timetable_mt = require "luatz.timetable".timetable_mt
+
+local function to_timestamp ( o )
+	if type ( o ) == "number" then
+		return o
+	elseif getmetatable ( o ) == timetable_mt then
+		return o:timestamp ( )
+	end
+end
 
 local tz_info_methods = { }
 local tz_info_mt = {
 	__index = tz_info_methods ;
 }
+local tt_info_mt = {
+	__tostring = function ( self )
+		return string.format ( "tt_info:%s=%d" , self.abbr , self.gmtoff )
+	end ;
+}
 
 -- Binary search
 local function _find_current ( tzinfo , target , i , j )
@@ -52,15 +66,18 @@ local function find_current_local ( tzinfo , ts_local )
 end
 
 function tz_info_methods:find_current ( current )
+	current = assert ( to_timestamp ( current ) , "invalid timestamp to :find_current" )
 	return self [ _find_current ( self , current , 0 , #self ) ].info
 end
 
-function tz_info_methods:localize ( utc_ts )
+function tz_info_methods:localise ( utc_ts )
 	utc_ts = utc_ts or gettime ( )
 	return utc_ts + self:find_current ( utc_ts ).gmtoff
 end
+tz_info_methods.localize = tz_info_methods.localise
 
 function tz_info_methods:utctime ( ts_local )
+	ts_local = assert ( to_timestamp ( ts_local ) , "invalid timestamp to :utctime" )
 	local tz1 , tz2 = find_current_local ( self , ts_local )
 	tz1 = self [ tz1 ].info
 	if tz2 == nil then
@@ -74,4 +91,5 @@ end
 
 return {
 	tz_info_mt = tz_info_mt ;
+	tt_info_mt = tt_info_mt ;
 }