| rev | 
   line source | 
| 
jbe/bsw@0
 | 
     1 --[[--
 | 
| 
jbe/bsw@0
 | 
     2 text =                 -- text with the value formatted as a date, according to the locale settings
 | 
| 
jbe/bsw@0
 | 
     3 format.date(
 | 
| 
jbe/bsw@0
 | 
     4   value,               -- a date, 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 date or timestamp as a date, according to the locale settings.
 | 
| 
jbe/bsw@0
 | 
    11 
 | 
| 
jbe/bsw@0
 | 
    12 --]]--
 | 
| 
jbe/bsw@0
 | 
    13 
 | 
| 
jbe/bsw@0
 | 
    14 function format.date(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.date) 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.date(...) is neither a date, 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("date_format") or "YYYY-MM-DD"
 | 
| 
jbe/bsw@0
 | 
    29   result = string.gsub(result, "YYYY", function()
 | 
| 
jbe/bsw@0
 | 
    30     return format.decimal(value.year, { digits = 4 })
 | 
| 
jbe/bsw@0
 | 
    31   end)
 | 
| 
jbe/bsw@0
 | 
    32   result = string.gsub(result, "YY", function()
 | 
| 
jbe/bsw@0
 | 
    33     return format.decimal(value.year % 100, { digits = 2 })
 | 
| 
jbe/bsw@0
 | 
    34   end)
 | 
| 
jbe/bsw@0
 | 
    35   result = string.gsub(result, "Y", function()
 | 
| 
jbe/bsw@0
 | 
    36     return format.decimal(value.year)
 | 
| 
jbe/bsw@0
 | 
    37   end)
 | 
| 
jbe/bsw@0
 | 
    38   result = string.gsub(result, "MM", function()
 | 
| 
jbe/bsw@0
 | 
    39     return format.decimal(value.month, { digits = 2 })
 | 
| 
jbe/bsw@0
 | 
    40   end)
 | 
| 
jbe/bsw@0
 | 
    41   result = string.gsub(result, "M", function()
 | 
| 
jbe/bsw@0
 | 
    42     return format.decimal(value.month)
 | 
| 
jbe/bsw@0
 | 
    43   end)
 | 
| 
jbe/bsw@0
 | 
    44   result = string.gsub(result, "DD", function()
 | 
| 
jbe/bsw@0
 | 
    45     return format.decimal(value.day, { digits = 2 })
 | 
| 
jbe/bsw@0
 | 
    46   end)
 | 
| 
jbe/bsw@0
 | 
    47   result = string.gsub(result, "D", function()
 | 
| 
jbe/bsw@0
 | 
    48     return format.decimal(value.day)
 | 
| 
jbe/bsw@0
 | 
    49   end)
 | 
| 
jbe/bsw@0
 | 
    50   return result
 | 
| 
jbe/bsw@0
 | 
    51 end
 |