Lucerna.Traits (Lucerna v0.0.1-alpha.0)

Trait normalization. Traits are always %{String.t() => String.t()} on the wire and in the engine — stringification happens at the boundary.

Summary

Functions

Lenient normalization for gates reads, which never raise: anything stringifiable passes, anything else is dropped.

Strict normalization for Lucerna.Identity construction / identify: bad input is a programming error and fails loud with ArgumentError.

Types

traits()

@type traits() :: %{required(String.t()) => String.t()}

Functions

normalize(traits)

@spec normalize(term()) :: traits()

Lenient normalization for gates reads, which never raise: anything stringifiable passes, anything else is dropped.

normalize!(traits)

@spec normalize!(map()) :: traits()

Strict normalization for Lucerna.Identity construction / identify: bad input is a programming error and fails loud with ArgumentError.

Keys may be strings or atoms; values may be strings, atoms, numbers, or booleans — everything is stringified.