Class: TheFox::Range::Resolver
- Inherits:
-
Object
- Object
- TheFox::Range::Resolver
- 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
-
#initialize(original = nil) ⇒ Resolver
constructor
A new instance of Resolver.
- #to_a ⇒ Object
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_a ⇒ Object
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 |