Unity.GnuUnitsImporter.Registrar (Unity v0.7.0)

Copy Markdown View Source

Pass 3: converts resolved GNU unit definitions into Localize custom unit registrations.

Maps GNU primitive dimensions to CLDR base unit names, determines categories, and either registers units directly or produces .exs export data.

Summary

Functions

Extracts dimensionless resolved entries as named constants.

Registers all resolved definitions via Localize.Unit.define_unit/2.

Converts resolved definitions into a list of definition maps suitable for Localize.Unit.load_custom_units/1.

Functions

constants(resolved)

@spec constants(%{required(String.t()) => {float(), map()}}) :: %{
  required(String.t()) => number()
}

Extracts dimensionless resolved entries as named constants.

Returns a map of %{name => numeric_value} suitable for use as let bindings in a Unity evaluation environment.

Arguments

  • resolved — map of name => {factor, dimensions} from the resolver.

Returns

  • A map of %{String.t() => number()}.

register_all(resolved)

@spec register_all(%{required(String.t()) => {float(), map()}}) :: %{
  imported: non_neg_integer(),
  skipped: non_neg_integer(),
  errors: [{String.t(), String.t()}]
}

Registers all resolved definitions via Localize.Unit.define_unit/2.

Arguments

  • resolved — map of name => {factor, dimensions} from the resolver.

Returns

  • %{imported: count, skipped: count, errors: [{name, reason}]}

to_definition_list(resolved)

@spec to_definition_list(%{required(String.t()) => {float(), map()}}) :: [map()]

Converts resolved definitions into a list of definition maps suitable for Localize.Unit.load_custom_units/1.