Method: Measured::UnitSystem#initialize
- Defined in:
- lib/measured/unit_system.rb
#initialize(units, cache: nil) ⇒ UnitSystem
Returns a new instance of UnitSystem.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/measured/unit_system.rb', line 5 def initialize(units, cache: nil) @units = units.map { |unit| unit.with(unit_system: self) } @units = @units.map do |unit| next unit unless unit.conversion_unit conversion_unit = @units.find { |u| u.names.include?(unit.conversion_unit) } next unit unless conversion_unit unit.with(value: [unit.conversion_amount, conversion_unit.name]) end @unit_names = @units.map(&:name).sort.freeze @unit_names_with_aliases = @units.flat_map(&:names).sort.freeze @unit_name_to_unit = @units.each_with_object({}) do |unit, hash| unit.names.each { |name| hash[name.to_s] = unit } end @conversion_table_builder = Measured::ConversionTableBuilder.new(@units, cache: cache) @conversion_table = @conversion_table_builder.to_h.freeze end |