Class: TheFox::Range::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/thefox-ext/range/resolver.rb

Overview

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] ‘11’ -> [11] ‘15-7’ -> [15, 16, 17] ‘11,02’ -> [11, 102] ‘23{4,5,6}’ -> [234, 235, 26] ‘1-3/1’ -> [1, 2, 3] ‘1-10/2’ -> [1, 3, 5, 7, 9] ‘210-20/2’ -> [210, 212, 214, 216, 218, 220]

Instance Method Summary collapse

Constructor Details

#initialize(original = nil) ⇒ Resolver

Returns a new instance of Resolver.



20
21
22
23
# File 'lib/thefox-ext/range/resolver.rb', line 20

def initialize(original = nil)
  # puts '-> TheFox::Range::Resolver.initialize'
  @original = original.to_s
end

Instance Method Details

#to_aObject



25
26
27
28
29
30
# 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