additional helper methods for special classes
sequence combinator<br/> result in an array
@ desc.seq, seq_
Returns the parse result at idx, shorter and faster than map{|array| array[idx]}
@ example
assert_equal 'b', seq('a', 'b', 'c')[1].parse('abc')
# File lib/rsec/helpers.rb, line 313 def [] idx, &p raise 'index out of range' if (idx >= some().size or idx < 0) # optimize parsers = some().map.with_index do |p, i| i == idx ? p : Rsec.try_skip_pattern(p) end SeqOne[parsers, idx].map p end
# File lib/rsec/parsers/seq.rb, line 6 def _parse ctx some.map do |e| res = e._parse ctx return INVALID if INVALID[res] res end end
@ desc
Think about "innerHTML"!
@ example
parser = seq('<b>', /[\w\s]+/, '</b>').inner parser.parse('<b>the inside</b>')
# File lib/rsec/helpers.rb, line 333 def inner &p Inner[self].map p end
@ desc.seq, seq_, join, join.even, join.odd
If parse result contains only 1 element, return the element instead of the array
# File lib/rsec/helpers.rb, line 324 def unbox &p Unbox[self].map p end