repeat from range.begin.abs to range.end.abs <br/> note: range's max should always be > 0<br/>
see also helpers
# File lib/rsec/parsers/repeat.rb, line 23 def self.[] base, range self.new base, range end
# File lib/rsec/parsers/repeat.rb, line 27 def initialize base, range @base = base @at_least = range.min.abs @optional = range.max - @at_least end
# File lib/rsec/parsers/repeat.rb, line 33 def _parse ctx rp_node = [] @at_least.times do res = @base._parse ctx return INVALID if INVALID[res] rp_node.push res end @optional.times do save = ctx.pos res = @base._parse ctx if INVALID[res] ctx.pos = save break end rp_node.push res end rp_node end