Class: Reciter::Parser
- Inherits:
-
Object
- Object
- Reciter::Parser
- Defined in:
- lib/reciter/parser.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
Instance Method Details
#parse(sequence) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/reciter/parser.rb', line 3 def parse(sequence) return [] if sequence.nil? || sequence == '' validate_format(sequence) sequence. split(';'). map {|subsequence| if subsequence.include?('-') r = Range.new(*subsequence.split('-').map(&:to_i)) raise InvalidInput unless r.begin <= r.end r.to_a else subsequence end }. flatten. uniq. map(&:to_i). sort end |
#unparse(*sequence) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/reciter/parser.rb', line 23 def unparse(*sequence) mechanic, sequence = handle_unparse_params(sequence) ranges = [] last = nil sequence.sort.each do |n| if last.nil? || n != last + 1 ranges << Range.new(n, n) else ranges[-1] = Range.new(ranges[-1].begin, n) end last = n end ranges.map {|r| if r.end == r.begin || r.end == r.begin + 1 r.to_a else "%s%s%s" % [r.begin, mechanic ? '-' : " #{config.text_for_to} ", r.end] end }. flatten. join(mechanic ? ';' : ', ') end |