class UnitSoup::Rule

Attributes

that_measurement[R]
this_measurement[R]

Public Class Methods

from(r) click to toggle source
# File lib/unit_soup/rule.rb, line 14
def self.from(r)
  self.new r
end
new(*args) click to toggle source
# File lib/unit_soup/rule.rb, line 20
def initialize(*args)
  case args.length
  when 1
    r = args[0]
    raise ArgumentError.new("No argument provided") unless r
    if r.is_a? Rule
      @this_measurement = Measurement.new r.this_measurement
      @that_measurement = Measurement.new r.that_measurement
    else
      strs = r.to_s.split '='
      raise ArgumentError.new("Format: 12 inch = 1 foot") unless strs.length == 2
      @this_measurement = Measurement.new strs[0]
      @that_measurement = Measurement.new strs[1]
    end
  else
    @this_measurement = Measurement.new(args[0])
    @that_measurement = Measurement.new(args[1])
  end
end
valid?(str) click to toggle source
# File lib/unit_soup/rule.rb, line 8
def self.valid?(str)
  return false unless str
  strs = str.split '='
  strs.length > 1 && Measurement.valid?(strs[0]) && Measurement.valid?(strs[1])
end

Public Instance Methods

==(o) click to toggle source
# File lib/unit_soup/rule.rb, line 44
def ==(o)
  this_measurement == o.this_measurement && that_measurement == o.that_measurement
end
eql?(o) click to toggle source
# File lib/unit_soup/rule.rb, line 48
def eql?(o)
  this_measurement == o.this_measurement && that_measurement == o.that_measurement
end
hash() click to toggle source
# File lib/unit_soup/rule.rb, line 52
def hash
  to_s.hash
end
to_s() click to toggle source
# File lib/unit_soup/rule.rb, line 40
def to_s
  "#{this_measurement} = #{that_measurement}"
end