class Rsec::Seq


additional helper methods for special classes

sequence combinator<br/> result in an array

Public Instance Methods

[](idx, &p) click to toggle source

@ 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
_parse(ctx) click to toggle source
# 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
inner(&p) click to toggle source

@ desc

Think about "innerHTML"!

@ example

parser = seq('&lt;b&gt;', /[\w\s]+/, '&lt;/b&gt;').inner
parser.parse('&lt;b&gt;the inside&lt;/b&gt;')
# File lib/rsec/helpers.rb, line 333
def inner &p
  Inner[self].map p
end
unbox(&p) click to toggle source

@ 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