Search documentation of Localize

# Localize.Collation.Variable (Localize v0.39.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(elements, atom, max_variable_primary)

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}