class Rsec::Seq_

skips skipper between tokens

Public Instance Methods

[](idx, &p) click to toggle source
# File lib/rsec/helpers.rb, line 340
def [] idx, &p
  raise 'index out of range' if idx > rest.size or idx < 0
  # optimize parsers, use skip if possible
  new_first = (0 == idx ? first : Rsec.try_skip_pattern(first))
  new_rest = rest().map.with_index do |p, i|
    # NOTE rest start with 1
    (i+1) == idx ? p : Rsec.try_skip_pattern(p)
  end
  SeqOne_[new_first, new_rest, skipper, idx].map p
end
_parse(ctx) click to toggle source
# File lib/rsec/parsers/seq.rb, line 35
def _parse ctx
  res = first._parse ctx
  return INVALID if INVALID[res]
  ret = [res]

  rest.each do |e|
    return INVALID if INVALID[skipper._parse ctx]
    res = e._parse ctx
    return INVALID if INVALID[res]
    ret << res
  end
  ret
end
inner(&p) click to toggle source
# File lib/rsec/helpers.rb, line 355
def inner &p
  Inner[self].map p
end
unbox(&p) click to toggle source
# File lib/rsec/helpers.rb, line 351
def unbox &p
  Unbox[self].map p
end