Class: Shioconv

Inherits:
Object
  • Object
show all
Defined in:
lib/shioconv.rb,
lib/shioconv/version.rb

Defined Under Namespace

Classes: Condiment, Unit

Constant Summary collapse

VERSION =
"0.1.3"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(condiment: condiment, quantity: quantity, unit: unit) ⇒ Shioconv

Returns a new instance of Shioconv.



18
19
20
21
22
# File 'lib/shioconv.rb', line 18

def initialize(condiment: condiment, quantity: quantity, unit: unit)
  @condiment = condiment
  @quantity  = quantity
  @unit      = unit
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/shioconv.rb', line 24

def method_missing(name, *args)
  return super unless m = /\Ato_(?<dst_unit>\w+)\Z/.match(name)
  dst_unit = m[:dst_unit].to_sym
  return super unless Unit.convertable?(dst_unit)

  @unit.convert(@condiment, @quantity, dst_unit)
end

Instance Attribute Details

#condimentObject (readonly)

Returns the value of attribute condiment.



9
10
11
# File 'lib/shioconv.rb', line 9

def condiment
  @condiment
end

#quantityObject (readonly)

Returns the value of attribute quantity.



9
10
11
# File 'lib/shioconv.rb', line 9

def quantity
  @quantity
end

#unitObject (readonly)

Returns the value of attribute unit.



9
10
11
# File 'lib/shioconv.rb', line 9

def unit
  @unit
end

Class Method Details

.measure(condiment_name, quantity, unit_name) ⇒ Object



11
12
13
14
15
16
# File 'lib/shioconv.rb', line 11

def self.measure(condiment_name, quantity, unit_name)
  condiment = Condiment.find_by(condiment_name)
  unit      = Unit.find_by(unit_name)

  self.new(condiment: condiment, quantity: quantity, unit: unit)
end