class NumberMuncher::Parser

Attributes

value[R]

Public Class Methods

new(value) click to toggle source
# File lib/number_muncher/parser.rb, line 3
def initialize(value)
  @value = value
end

Public Instance Methods

call() click to toggle source
# File lib/number_muncher/parser.rb, line 7
def call
  return Numeric.new(value) unless value.is_a?(String)
  return nil if tokens.empty?
  raise InvalidParseExpression, 'parse requires a single number' unless tokens.size == 1

  tokens.first.value

rescue ArgumentError, ZeroDivisionError
  raise InvalidNumber, "#{value} is not valid input to parse."
end

Private Instance Methods

tokens() click to toggle source
# File lib/number_muncher/parser.rb, line 22
def tokens
  NumberMuncher::Tokenizer.new(value).call(raise: true)
end