Fri, 17 Dec 2010 01:24:59 +0000
net.httpserver: Default 'ports' = {5280}
1523
841d61be198f
Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents:
921
diff
changeset
|
1 | -- Prosody IM |
2923
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
1523
diff
changeset
|
2 | -- Copyright (C) 2008-2010 Matthew Wild |
b7049746bd29
Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents:
1523
diff
changeset
|
3 | -- Copyright (C) 2008-2010 Waqas Hussain |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
248
diff
changeset
|
4 | -- |
758 | 5 | -- This project is MIT/X11 licensed. Please see the |
6 | -- COPYING file in the source package for more information. | |
519
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
248
diff
changeset
|
7 | -- |
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
248
diff
changeset
|
8 | |
cccd610a0ef9
Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents:
248
diff
changeset
|
9 | |
921
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
10 | -- XEP-0082: XMPP Date and Time Profiles |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
11 | |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
12 | local os_date = os.date; |
3430
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
13 | local os_time = os.time; |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
14 | local os_difftime = os.difftime; |
921
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
15 | local error = error; |
3430
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
16 | local tonumber = tonumber; |
921
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
17 | |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
18 | module "datetime" |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
19 | |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
20 | function date(t) |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
21 | return os_date("!%Y-%m-%d", t); |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
22 | end |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
23 | |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
24 | function datetime(t) |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
25 | return os_date("!%Y-%m-%dT%H:%M:%SZ", t); |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
26 | end |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
27 | |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
28 | function time(t) |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
29 | return os_date("!%H:%M:%S", t); |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
30 | end |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
31 | |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
32 | function legacy(t) |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
33 | return os_date("!%Y%m%dT%H:%M:%S", t); |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
34 | end |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
35 | |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
36 | function parse(s) |
3430
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
37 | if s then |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
38 | local year, month, day, hour, min, sec, tzd; |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
39 | year, month, day, hour, min, sec, tzd = s:match("^(%d%d%d%d)-?(%d%d)-?(%d%d)T(%d%d):(%d%d):(%d%d)%.?%d*([Z+%-].*)$"); |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
40 | if year then |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
41 | local time_offset = os_difftime(os_time(os_date("*t")), os_time(os_date("!*t"))); -- to deal with local timezone |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
42 | local tzd_offset = 0; |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
43 | if tzd ~= "" and tzd ~= "Z" then |
3642
ed80c4c56b9c
util.datetime: Fixes for more liberal timezone parsing - colon and minutes are both (independantly) optional (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3430
diff
changeset
|
44 | local sign, h, m = tzd:match("([+%-])(%d%d):?(%d*)"); |
3430
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
45 | if not sign then return; end |
3642
ed80c4c56b9c
util.datetime: Fixes for more liberal timezone parsing - colon and minutes are both (independantly) optional (thanks Zash)
Matthew Wild <mwild1@gmail.com>
parents:
3430
diff
changeset
|
46 | if #m ~= 2 then m = "0"; end |
3430
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
47 | h, m = tonumber(h), tonumber(m); |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
48 | tzd_offset = h * 60 * 60 + m * 60; |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
49 | if sign == "-" then tzd_offset = -tzd_offset; end |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
50 | end |
3643
2dc342a13f35
util.datetime: Fix so that the timestamp returned is always in UTC, timezone offsets were going in the wrong direction
Matthew Wild <mwild1@gmail.com>
parents:
3642
diff
changeset
|
51 | sec = (sec + time_offset) - tzd_offset; |
3430
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
52 | return os_time({year=year, month=month, day=day, hour=hour, min=min, sec=sec}); |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
53 | end |
970690b3cb28
util.datetime: Added implementation for function parse().
Waqas Hussain <waqas20@gmail.com>
parents:
2923
diff
changeset
|
54 | end |
921
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
55 | end |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
56 | |
f97d37a7d8a6
util.datetime: Allow specifying a time to format
Matthew Wild <mwild1@gmail.com>
parents:
894
diff
changeset
|
57 | return _M; |