View Source Expo.PluralForms (expo v0.3.0)
Functions to parse and evaluate plural forms as defined in the GNU Gettext documentation.
The documentation is available at https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html.
usage
Usage
Some functions in this module are considered "low level", and are meant to be
used by other libraries. For example, parse/1
returns an expression
that is not really meant to be inspected, but rather used internally by this library.
Link to this section Summary
Functions
Gets the plural form for the given number based on the given plural_forms
struct.
Get known locales where plural form information is available.
Parses a plural forms string into a t/0
struct, raising if there are errors.
Parses a plural forms string into a t/0
struct.
Gets the plural form for the given language based on built-in information.
Converts a plural forms struct into its string representation.
Link to this section Types
@opaque plural_ast()
The AST of a plural forms expression.
This is evaluated internally to determine the plural form for a given number
using index/2
, and is not meant to be inspected directly.
@type t() :: %Expo.PluralForms{nplurals: pos_integer(), plural: plural_ast()}
A struct representing a plural forms expression.
Link to this section Functions
@spec index(t(), non_neg_integer()) :: non_neg_integer()
Gets the plural form for the given number based on the given plural_forms
struct.
examples
Examples
iex> {:ok, plural_form} = Expo.PluralForms.parse("nplurals=2; plural=n != 1;")
iex> Expo.PluralForms.index(plural_form, 4)
1
iex> Expo.PluralForms.index(plural_form, 1)
0
@spec known_locales() :: [String.t(), ...]
Get known locales where plural form information is available.
examples
Examples
iex> "de" in Expo.PluralForms.known_locales()
true
iex> "invalid" in Expo.PluralForms.known_locales()
false
Parses a plural forms string into a t/0
struct, raising if there are errors.
Same as parse/1
, but returns the plural forms struct directly if the
parsing is successful, or raises an error otherwise.
The Inspect
implementation for the Expo.PluralForms
struct uses this function
to display the plural forms expression, which is why the example below might
look a bit weird.
examples
Examples
iex> Expo.PluralForms.parse!("nplurals=2; plural=n != 1;")
Expo.PluralForms.parse!("nplurals=2; plural=n != 1;")
@spec parse(String.t()) :: {:ok, t()} | {:error, Expo.PluralForms.SyntaxError.t()}
Parses a plural forms string into a t/0
struct.
Returns {:ok, struct}
if the string is valid, or {:error, error}
if it isn't.
examples
Examples
iex> Expo.PluralForms.parse("nplurals=2; plural=n != 1;")
{:ok, Expo.PluralForms.parse!("nplurals=2; plural=n != 1;")}
Gets the plural form for the given language based on built-in information.
examples
Examples
iex> Expo.PluralForms.plural_form("de")
{:ok, Expo.PluralForms.parse!("nplurals=2; plural=(n != 1);")}
iex> Expo.PluralForms.plural_form("invalid")
:error
Converts a plural forms struct into its string representation.
examples
Examples
iex> plural_forms = Expo.PluralForms.parse!("nplurals=2; plural=n != 1;")
iex> Expo.PluralForms.to_string(plural_forms)
"nplurals=2; plural=n != 1;"