webmcp
annotate framework/env/format/time.lua @ 4:5e32ef998acf
Version 1.0.4
ui.link{...} with POST target can now be parameterized with BOTH content and text to allow HTML content for JavaScript browsers and a text-only version for accessiblity
Changes related to database selectors:
- Support for row-based locking
- New method :count(), caching and returning the number of rows, which WOULD have been returned by :exec()
- Bugfix: WHERE and HAVING expressions are now enclosed in parenthesis to avoid problems with operator precedence
ui.script{...} now supports external .js files
Changes in langtool.lua to cope with escaped new-line chars (\n)
ui.link{...} with POST target can now be parameterized with BOTH content and text to allow HTML content for JavaScript browsers and a text-only version for accessiblity
Changes related to database selectors:
- Support for row-based locking
- New method :count(), caching and returning the number of rows, which WOULD have been returned by :exec()
- Bugfix: WHERE and HAVING expressions are now enclosed in parenthesis to avoid problems with operator precedence
ui.script{...} now supports external .js files
Changes in langtool.lua to cope with escaped new-line chars (\n)
author | jbe/bsw |
---|---|
date | Fri Dec 25 12:00:00 2009 +0100 (2009-12-25) |
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 |