View Source Cldr.DateTime.Format.Compiler (Cldr Dates & Times v2.20.3)
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
format/3
in a backend module. 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 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"]
Summary
Functions
Parse a date, time or datetime format string.
Tokenize a date, time or datetime format string.
Functions
Parse a date, time or datetime format string.
Arguments
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
Returns 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.
Tokenize a date, time or datetime format string.
This function is designed to produce output
that is fed into Cldr.DateTime.Format.Compiler.compile/3
.
Arguments
format_string
is a date, datetime or time format string.
Returns
A list of 3-tuples which represent the tokens of the format definition.
Example
iex> Cldr.DateTime.Format.Compiler.tokenize("yyyy/MM/dd")
{:ok,
[{:year, 1, 4}, {:literal, 1, "/"}, {:month, 1, 2}, {:literal, 1, "/"},
{:day_of_month, 1, 2}], 1}