Unit::Formatter
Provides string formatting capabilities for measurements
This module adds various formatting methods to measurements for displaying values in different formats and styles.
Formatting Options
- Precision: Control decimal places (0-10)
- Unit Format: Short (:short) or long (:long) unit names
- Humanization: Natural language output with pluralization
- Smart Formatting: Automatic whole number detection
Examples
weight = Weight.new(10.5, Weight::Unit::Kilogram)
weight.format # => "10.50 kilogram"
weight.format(precision: 1) # => "10.5 kilogram"
weight.format(unit_format: :short) # => "10.50 kg"
weight.humanize # => "10.5 kilograms"
Instance methods
Returns a formatted string representation of the measurement
Parameters
- precision: Number of decimal places (0-10, default: 2)
- unit_format: Format style for units (:short or :long, default: :long)
Examples
measurement.format # => "10.50 kilogram"
measurement.format(precision: 0) # => "11 kilogram"
measurement.format(precision: 3) # => "10.500 kilogram"
measurement.format(unit_format: :short) # => "10.50 kg"
measurement.format(precision: 1, unit_format: :short) # => "10.5 kg"
humanize
Returns a human-readable string with proper pluralization
Converts technical unit names to natural language with appropriate singular/plural forms based on the value.
Examples
Weight.new(1, Weight::Unit::Kilogram).humanize # => "1 kilogram"
Weight.new(2, Weight::Unit::Kilogram).humanize # => "2 kilograms"
Weight.new(0, Weight::Unit::Kilogram).humanize # => "0 kilograms"
Weight.new(-1, Weight::Unit::Kilogram).humanize # => "-1 kilogram"
Weight.new(1.5, Weight::Unit::Kilogram).humanize # => "1.5 kilograms"