Twm.SortModifiers (Twm v0.1.0)

View Source

Sorts modifiers according to following schema:

  • Predefined modifiers are sorted alphabetically
  • When an arbitrary variant appears, it must be preserved which modifiers are before and after it

Summary

Functions

Creates a context for sorting modifiers based on the provided configuration.

Sorts a list of modifiers using the provided context.

Functions

create_sort_modifiers(config)

@spec create_sort_modifiers(Twm.Config.t()) :: Twm.Context.ModifierSortingContext.t()

Creates a context for sorting modifiers based on the provided configuration.

The context holds the configuration data needed for modifier sorting operations.

Parameters

  • config - A keyword list containing the order_sensitive_modifiers key

Returns

A Context struct containing the sorting configuration.

Examples

iex> config = Twm.Config.new([order_sensitive_modifiers: ["hover", "focus"]])
iex> context = Twm.SortModifiers.create_sort_modifiers(config)
iex> Twm.SortModifiers.sort_modifiers(["d", "hover", "c"], context)
["d", "hover", "c"]

iex> config = Twm.Config.new([order_sensitive_modifiers: ["hover"]])
iex> context = Twm.SortModifiers.create_sort_modifiers(config)
iex> Twm.SortModifiers.sort_modifiers(["[data-test]", "d", "c"], context)
["[data-test]", "c", "d"]

sort_modifiers(modifiers, modifier_sorting_context)

@spec sort_modifiers([String.t()], Twm.Context.ModifierSortingContext.t()) :: [
  String.t()
]

Sorts a list of modifiers using the provided context.

Parameters

  • modifiers - List of modifier strings to sort
  • context - Context struct containing sorting configuration

Returns

A sorted list of modifiers.

Examples

iex> config = Twm.Config.new([order_sensitive_modifiers: ["hover"]])
iex> context = Twm.SortModifiers.create_sort_modifiers(config)
iex> Twm.SortModifiers.sort_modifiers(["d", "hover", "c"], context)
["d", "hover", "c"]