class TheFox::Range::Resolver

Resolve a range string to an array. A range string can be like '1, 3..5, 9-11, 12+, 14++, 17+++'. Which will be resolved to [1, 3, 4, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]. '1' -> [1] '1,3,99' -> [1, 3, 99] '1-5' -> [1, 2, 3, 4, 5] '1+,5++' -> [1, 2, 5, 6, 7] '1-10/2' -> [1, 3, 5, 7, 9] '1{1}' -> [11] '1{5-7}' -> [15, 16, 17] '1{1,02}' -> [11, 102] '2{3{4,5},6}' -> [234, 235, 26] '1-3/1' -> [1, 2, 3] '1-10/2' -> [1, 3, 5, 7, 9] '2{10-20/2}' -> [210, 212, 214, 216, 218, 220]

Public Class Methods

new(original = nil) click to toggle source
# File lib/thefox-ext/range/resolver.rb, line 20
def initialize(original = nil)
  # puts '-> TheFox::Range::Resolver.initialize'
  @original = original.to_s
end

Public Instance Methods

to_a() click to toggle source
# File lib/thefox-ext/range/resolver.rb, line 25
def to_a
  # puts '-> TheFox::Range::Resolver.to_a'

  lexer = Lexer::Lexer.new(@original.to_s.split(''))
  lexer.resolve.flatten
end