class Stravid::Fraction::Fraction

Attributes

denominator[R]
numerator[R]

Public Class Methods

new(value) click to toggle source
# File lib/stravid/fraction/fraction.rb, line 4
def initialize(value)
  parts = value.split('/')
  @numerator = parts[0].to_i
  @denominator = (parts[1] || 1).to_i
end

Public Instance Methods

+(other) click to toggle source
# File lib/stravid/fraction/fraction.rb, line 10
def +(other)
  a_denominator = self.denominator
  b_denominator = other.denominator
  a_numerator = self.numerator
  b_numerator = other.numerator

  if a_denominator != b_denominator
    actual_denominator = a_denominator * b_denominator
    a_numerator = a_numerator * b_denominator
    b_numerator = b_numerator * a_denominator
  else
    actual_denominator = a_denominator
  end

  new_numerator = a_numerator + b_numerator
  new_denominator = actual_denominator / (new_numerator.gcd(actual_denominator))
  new_numerator = new_numerator / (new_numerator.gcd(actual_denominator))

  Fraction.new("#{new_numerator}/#{new_denominator}")
end
==(other) click to toggle source
# File lib/stravid/fraction/fraction.rb, line 31
def ==(other)
  other.numerator == numerator && other.denominator == denominator
end
Also aliased as: eql?
eql?(other)
Alias for: ==