class NumberMuncher::Token::Fraction

Public Class Methods

regex() click to toggle source
# File lib/number_muncher/token/fraction.rb, line 4
def self.regex
  %r{
    (?<sign>-)?
    (?:(?<whole>#{Int.regex})(?:-|\s*))??
    (
      (?<numerator>\d+)\s*/\s*(?<denominator>\d+)
      |
      (?<unicode>#{Unicode::REGEX})
    )
  }x
end

Public Instance Methods

fraction?() click to toggle source
# File lib/number_muncher/token/fraction.rb, line 16
def fraction?
  true
end

Private Instance Methods

parse() click to toggle source
# File lib/number_muncher/token/fraction.rb, line 22
def parse
  sign, whole, numerator, denominator, unicode = captures

  r = unicode ? Unicode::MAPPING[unicode] : Rational(numerator, denominator)
  r += Int.new(whole).to_r if whole
  r *= -1 if sign
  r
end