Localize.Collation.Variable (Localize v0.38.0)

Copy Markdown View Source

Variable weight handling for the collation algorithm.

In the UCA, "variable" collation elements are those for spaces, punctuation, and optionally symbols and currency signs. The alternate setting controls how these are handled:

  • :non_ignorable - Variable CEs keep all their weights (default for CLDR).

  • :shifted - Variable CEs have L1/L2/L3 zeroed, original L1 moves to L4.

Summary

Functions

Process a list of collation elements according to the variable weight rules.

Functions

process(elements, atom, max_variable_primary)

@spec process(
  [Localize.Collation.Element.t()],
  :non_ignorable | :shifted,
  non_neg_integer()
) :: [
  {Localize.Collation.Element.t(), non_neg_integer()}
]

Process a list of collation elements according to the variable weight rules.

Arguments

  • elements - a list of collation element tuples.

  • alternate - the variable handling mode: :non_ignorable or :shifted.

  • max_variable_primary - the maximum primary weight for variable elements.

Returns

A list of {element, quaternary_weight} tuples.

Examples

iex> elems = [{0x23EC, 0x0020, 0x0002, false}]
iex> [{elem, q}] = Localize.Collation.Variable.process(elems, :non_ignorable, 0x0B61)
iex> {Localize.Collation.Element.primary(elem), q}
{0x23EC, 0}