lib: rename `standard` as `core`
[nit.git] / lib / standard / time.nit
diff --git a/lib/standard/time.nit b/lib/standard/time.nit
deleted file mode 100644 (file)
index adac6ff..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2008 Floréal Morandat <morandat@lirmm.fr>
-# Copyright 2014 Alexandre Terrasa <alexandre@moz-code.org>
-#
-# This file is free software, which comes along with NIT.  This software is
-# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
-# without  even  the implied warranty of  MERCHANTABILITY or  FITNESS FOR A
-# PARTICULAR PURPOSE.  You can modify it is you want,  provided this header
-# is kept unaltered, and a notification of the changes is added.
-# You  are  allowed  to  redistribute it and sell it, alone or is a part of
-# another product.
-
-# Management of time and dates
-module time
-
-import text
-import stream
-
-in "C Header" `{
-       #include <time.h>
-`}
-
-redef class Object
-       # Unix time: the number of seconds elapsed since January 1, 1970
-       protected fun get_time: Int `{ return time(NULL); `}
-end
-
-redef class Sys
-       # Wait a specific number of second and nanoseconds
-       fun nanosleep(sec, nanosec: Int) `{
-               const struct timespec req = {sec, nanosec};
-               nanosleep(&req, NULL);
-       `}
-end
-
-# Time since epoch
-extern class TimeT `{time_t`}
-
-       # Returns Time since epoch from now.
-       new `{ return time(NULL); `}
-
-       # Returns Time since epoch from `i` (expressed in seconds).
-       new from_i(i: Int) `{ return i; `}
-
-       # Update current time.
-       fun update `{ time(&self); `}
-
-       # Convert `self` to a human readable String.
-       fun ctime: String import NativeString.to_s_with_copy `{
-               return NativeString_to_s_with_copy( ctime(&self) );
-       `}
-
-       # Difference in secondes from start (self if the end time)
-       fun difftime(start: TimeT): Float `{ return difftime(self, start); `}
-
-       redef fun to_s do return ctime.replace("\n", "")
-
-       # Convert self to Int (expressed as seconds since epoch).
-       fun to_i: Int `{ return (int)self; `}
-end
-
-# Time structure
-extern class Tm `{struct tm *`}
-
-       # Create a new Time structure expressed in Coordinated Universal Time (UTC).
-       new gmtime `{
-               struct tm *tm;
-               time_t t = time(NULL);
-               tm = gmtime(&t);
-               return tm;
-       `}
-
-       # Create a new Time structure expressed in UTC from `t`.
-       new gmtime_from_timet(t: TimeT) `{
-               struct tm *tm;
-               tm = gmtime(&t);
-               return tm;
-       `}
-
-       # Create a new Time structure expressed in the local timezone.
-       new localtime `{
-               struct tm *tm;
-               time_t t = time(NULL);
-               tm = localtime(&t);
-               return tm;
-       `}
-
-       # Create a new Time structure expressed in the local timezone from `t`.
-       new localtime_from_timet(t: TimeT) `{
-               struct tm *tm;
-               tm = localtime(&t);
-               return tm;
-       `}
-
-       # Convert `self` as a TimeT.
-       fun to_timet: TimeT `{ return mktime(self); `}
-
-       # Seconds after the minute.
-       fun sec: Int `{ return self->tm_sec; `}
-
-       # Minutes after the hour.
-       fun min: Int `{ return self->tm_min; `}
-
-       # hours since midnight.
-       fun hour: Int `{ return self->tm_hour; `}
-
-       # Day of the month.
-       fun mday: Int `{ return self->tm_mday; `}
-
-       # Months since January.
-       fun mon: Int `{ return self->tm_mon; `}
-
-       # Years since 1900.
-       fun year: Int `{ return self->tm_year; `}
-
-       # Days since Sunday.
-       fun wday: Int `{ return self->tm_wday; `}
-
-       # Days since January 1st.
-       fun yday: Int `{ return self->tm_yday; `}
-
-       # Is `self` in Daylight Saving Time.
-       fun is_dst: Bool `{ return self->tm_isdst; `}
-
-       # Convert `self` to a human readable String.
-       fun asctime: String import NativeString.to_s_with_copy `{
-               return NativeString_to_s_with_copy( asctime(self) );
-       `}
-
-       # Convert `self` to a human readable String corresponding to `format`.
-       # TODO document allowed format.
-       fun strftime(format: String): String import String.to_cstring, NativeString.to_s `{
-               char* buf, *c_format;
-
-               buf = (char*)malloc(100);
-               c_format = String_to_cstring(format);
-
-               strftime(buf, 100, c_format, self);
-               String s = NativeString_to_s_with_copy(buf);
-               free(buf);
-               return s;
-       `}
-
-       redef fun to_s do return asctime.replace("\n", "")
-end
-
-# Date using the international format defined by ISO 8601.
-#
-# Usage:
-#
-#     # By default ISODate at today.
-#     var date = new ISODate
-#     var tm = new Tm.localtime
-#     assert date.year == tm.year + 1900
-#     assert date.month == tm.mon + 1
-#     assert date.day == tm.mday
-#
-#     # ISODate can be initialized from a String.
-#     date = new ISODate.from_string("1970-01-01T00:00:00Z")
-#     assert date.year == 1970
-#     assert date.month == 1
-#     assert date.day == 1
-#
-#     # ISODate can be printed as String following the ISO format.
-#     assert date.to_s == "1970-01-01T00:00:00Z"
-#
-# Note that only the `YYYY-MM-DDTHH:MM:SSZ` is supported for now.
-#
-# See <http://www.w3.org/QA/Tips/iso-date>
-class ISODate
-       super Comparable
-
-       # UTC years as Int.
-       var year: Int is noinit
-
-       # UTC months as Int (`1` for January).
-       var month: Int is noinit
-
-       # UTC days as Int (starting at `1`).
-       var day: Int is noinit
-
-       # UTC hours as Int.
-       var hours: Int is noinit
-
-       # UTC minutes as Int.
-       var minutes: Int is noinit
-
-       # UTC seconds as Int.
-       var seconds: Int is noinit
-
-       # UTC timezone marker.
-       #
-       # Note that I don't know what will happen if you change this value...
-       var timezone = "Z"
-
-       init do
-               var t = new Tm.localtime
-               year = 1900 + t.year
-               month = t.mon + 1
-               day = t.mday
-               hours = t.hour
-               minutes = t.min
-               seconds = t.sec
-       end
-
-       # Init `self` from a ISODate formatted string.
-       init from_string(str: String) do
-               year = str.substring(0, 4).to_i
-               month = str.substring(5, 2).to_i
-               day = str.substring(8, 2).to_i
-               hours = str.substring(11, 2).to_i
-               minutes = str.substring(14, 2).to_i
-               seconds = str.substring(17, 2).to_i
-               timezone = str.substring(19, str.length)
-       end
-
-       redef fun to_s do
-               var buff = new FlatBuffer
-               buff.append year.to_s
-               buff.add '-'
-               if month < 10 then buff.add '0'
-               buff.append month.to_s
-               buff.add '-'
-               if day < 10 then buff.add '0'
-               buff.append day.to_s
-               buff.add 'T'
-               if hours < 10 then buff.add '0'
-               buff.append hours.to_s
-               buff.add ':'
-               if minutes < 10 then buff.add '0'
-               buff.append minutes.to_s
-               buff.add ':'
-               if seconds < 10 then buff.add '0'
-               buff.append seconds.to_s
-               buff.append timezone
-               return buff.write_to_string
-       end
-
-       redef type OTHER: ISODate
-
-       # TODO handle timezones
-       redef fun <(o) do return to_s < o.to_s
-end