Cldr Dates & Times v1.2.0 Cldr.DateTime.Compiler View Source
Tokenizes and parses Date
, Time
and DateTime
format strings.
During compilation, each of the date, time and datetime format
strings defined in CLDR are compiled into a list of
function bodies that are then grafted onto the function head
Cldr.DateTime.Formatter.format/3
. As a result these compiled
formats execute with good performance.
For formats not defined in CLDR (ie a user defined format),
the tokenizing and parsing is performed, then list of function
bodies is created and then Cldr.DateTime.Formatter.format/3
recurses over the list, invoking each function and
collecting the results. This process is significantly slower
than that of the precompiled formats.
User defined formats can also be precompiled by configuring
them under the key :precompile_datetime_formats
. For example:
config :ex_cldr,
precompile_datetime_formats: ["yy/dd", "hhh:mmm:sss"]
Link to this section Summary
Functions
Parse a number format definition
Scan a number format definition and return the tokens of a date/time/datetime format string
Link to this section Functions
Parse a number format definition
format_string
is a string defining how a date/time/datetime is to be formatted. SeeCldr.DateTime.Formatter
for the list of supported format symbols.
Returns is a list of function bodies which are grafted onto
a function head in Cldr.DateTime.Formatter
at compile time
to produce a series of functions that process a given format
string efficiently.
Scan a number format definition and return the tokens of a date/time/datetime format string.
This function is designed to produce output
that is fed into Cldr.DateTime.Compiler.compile/1
.
Example
iex> Cldr.DateTime.Compiler.tokenize "yyyy/MM/dd"
{:ok,
[{:year, 1, 4}, {:literal, 1, "/"}, {:month, 1, 2}, {:literal, 1, "/"},
{:day_of_month, 1, 2}], 1}