webmcp
annotate framework/env/format/time.lua @ 3:795b764629ca
Version 1.0.3
Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
Important bugfix related to internal forwards (Bug was introduced by the restriction of views with underscore prefix in Version 1.0.2)
author | jbe |
---|---|
date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
parents | 9fdfb27f8e67 |
children | fd31e0aa629a |
rev | line source |
---|---|
jbe/bsw@0 | 1 --[[-- |
jbe/bsw@0 | 2 text = -- text with the value formatted as a time, according to the locale settings |
jbe/bsw@0 | 3 format.time( |
jbe/bsw@0 | 4 value, -- a time, a timestamp or nil |
jbe/bsw@0 | 5 { |
jbe/bsw@0 | 6 nil_as = nil_text -- text to be returned for a nil value |
jbe/bsw@0 | 7 } |
jbe/bsw@0 | 8 ) |
jbe/bsw@0 | 9 |
jbe/bsw@0 | 10 Formats a time or timestamp as a time, according to the locale settings. |
jbe/bsw@0 | 11 |
jbe/bsw@0 | 12 --]]-- |
jbe/bsw@0 | 13 |
jbe/bsw@0 | 14 function format.time(value, options) |
jbe/bsw@0 | 15 local options = options or {} |
jbe/bsw@0 | 16 if value == nil then |
jbe/bsw@0 | 17 return options.nil_as or "" |
jbe/bsw@0 | 18 end |
jbe/bsw@0 | 19 if not ( |
jbe/bsw@0 | 20 atom.has_type(value, atom.time) or |
jbe/bsw@0 | 21 atom.has_type(value, atom.timestamp) |
jbe/bsw@0 | 22 ) then |
jbe/bsw@0 | 23 error("Value passed to format.time(...) is neither a time, a timestamp, nor nil.") |
jbe/bsw@0 | 24 end |
jbe/bsw@0 | 25 if value.invalid then |
jbe/bsw@0 | 26 return "invalid" |
jbe/bsw@0 | 27 end |
jbe/bsw@0 | 28 local result = locale.get("time_format") or "HH:MM{:SS}" |
jbe/bsw@0 | 29 if options.hide_seconds then |
jbe/bsw@0 | 30 result = string.gsub(result, "{[^{|}]*}", "") |
jbe/bsw@0 | 31 else |
jbe/bsw@0 | 32 result = string.gsub(result, "{([^|]*)}", "%1") |
jbe/bsw@0 | 33 end |
jbe/bsw@0 | 34 local am_pm |
jbe/bsw@0 | 35 local hour = value.hour |
jbe/bsw@0 | 36 result = string.gsub(result, "{([^{}]*)|([^{}]*)}", function(am, pm) |
jbe/bsw@0 | 37 if hour > 12 then |
jbe/bsw@0 | 38 am_pm = pm |
jbe/bsw@0 | 39 else |
jbe/bsw@0 | 40 am_pm = am |
jbe/bsw@0 | 41 end |
jbe/bsw@0 | 42 return "{|}" |
jbe/bsw@0 | 43 end) |
jbe/bsw@0 | 44 if am_pm and hour > 12 then |
jbe/bsw@0 | 45 hour = hour - 12 |
jbe/bsw@0 | 46 end |
jbe/bsw@0 | 47 result = string.gsub(result, "HH", function() |
jbe/bsw@0 | 48 return format.decimal(hour, { digits = 2 }) |
jbe/bsw@0 | 49 end) |
jbe/bsw@0 | 50 result = string.gsub(result, "MM", function() |
jbe/bsw@0 | 51 return format.decimal(value.minute, { digits = 2 }) |
jbe/bsw@0 | 52 end) |
jbe/bsw@0 | 53 result = string.gsub(result, "SS", function() |
jbe/bsw@0 | 54 return format.decimal(value.second, { digits = 2 }) |
jbe/bsw@0 | 55 end) |
jbe/bsw@0 | 56 if am_pm then |
jbe/bsw@0 | 57 result = string.gsub(result, "{|}", am_pm) |
jbe/bsw@0 | 58 end |
jbe/bsw@0 | 59 return result |
jbe/bsw@0 | 60 end |