Module: Fino::Settings::Numeric

Included in:
Float, Integer
Defined in:
lib/fino/settings/numeric.rb

Defined Under Namespace

Modules: Unit

Instance Method Summary collapse

Instance Method Details

#unitObject



115
116
117
118
119
# File 'lib/fino/settings/numeric.rb', line 115

def unit
  return unless (identifier = definition.options[:unit])

  @unit ||= Unit.for(identifier)
end

#value(**context) ⇒ Object

Raises:

  • (ArgumentError)


103
104
105
106
107
108
109
110
111
112
113
# File 'lib/fino/settings/numeric.rb', line 103

def value(**context)
  result = super
  return result unless (target_unit_identifier = context[:unit])

  raise ArgumentError, "No unit defined for this setting" unless unit

  target_unit = Unit.for(target_unit_identifier)
  raise ArgumentError, "Cannot convert #{unit.name} to #{target_unit.name}" unless unit.convertible_to?(target_unit)

  result * unit.base_factor / target_unit.base_factor
end