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
@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_ignorableor: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}