Module: Parsr::Rules::Range

Defined in:
lib/parsr/rules/range.rb

Constant Summary collapse

NUMBER_PATTERN =
Regexp.union(Parsr::Rules::Float::PATTERN, Parsr::Rules::Integer::PATTERN)
PATTERN =
/(#{NUMBER_PATTERN})(\.{2,3})(#{NUMBER_PATTERN})/

Class Method Summary collapse

Class Method Details

.cast(float_or_integer) ⇒ Object



15
16
17
# File 'lib/parsr/rules/range.rb', line 15

def cast(float_or_integer)
  Integer(float_or_integer) rescue Float(float_or_integer)
end

.match(scanner) ⇒ Object



8
9
10
11
12
13
# File 'lib/parsr/rules/range.rb', line 8

def match(scanner)
  if scanner.scan(PATTERN)
    scanner.matched =~ PATTERN
    Parsr::Token.new(Range.new(cast($1), cast($3), $2.length > 2))
  end
end