Implements a parser for ICU MessageFormat 2.
Summary
Functions
@spec message(binary(), keyword()) :: {:ok, [term()], rest, context, line, byte_offset} | {:error, reason, rest, context, line, byte_offset} when line: {pos_integer(), byte_offset}, byte_offset: non_neg_integer(), rest: binary(), reason: String.t(), context: map()
Parses a MessageFormat 2 message string with the NimbleParsec
combinator that parse/1 wraps.
Arguments
binaryis a MF2 message string.optionsis a keyword list of NimbleParsec options. The default is[].
Returns
{:ok, ast, rest, context, position, byte_offset}on success.{:error, reason, rest, context, position, byte_offset}when the text is not a message.
Examples
iex> {:ok, ast, "", _context, _position, _offset} =
...> Localize.Message.Parser.message("{{Hello}}")
iex> ast
[{:complex, [], {:quoted_pattern, [text: "Hello"]}}]
@spec parse(String.t()) :: {:ok, list()} | {:error, Exception.t()}
Parses a MessageFormat 2 message string.
Arguments
inputis a MF2 message string.
Returns
{:ok, ast}whereastis the parsed message AST.{:error, reason}if the message cannot be parsed.
Examples
iex> Localize.Message.Parser.parse("{{Hello, world!}}")
{:ok, [{:complex, [], {:quoted_pattern, [{:text, "Hello, world!"}]}}]}
Parses a MessageFormat 2 message string, raising on error.
Same as parse/1 but returns the AST directly or raises
Localize.ParseError.
Arguments
inputis a MF2 message string.
Returns
- The parsed message AST.
Examples
iex> Localize.Message.Parser.parse!("{{Hello, world!}}")
[{:complex, [], {:quoted_pattern, [{:text, "Hello, world!"}]}}]