Sha256: e1c69c1b8f2c227bfdbf9f4ac89c399f3fa1ad729f68fa0e0a37a9f76596acb2
Contents?: true
Size: 862 Bytes
Versions: 2
Compression:
Stored size: 862 Bytes
Contents
# A sequence of parslets, matched from left to right. Denoted by '>>' # # Example: # # str('a') >> str('b') # matches 'a', then 'b' # class Parslet::Atoms::Sequence < Parslet::Atoms::Base attr_reader :parslets def initialize(*parslets) @parslets = parslets end def >>(parslet) @parslets << parslet self end def try(io) [:sequence]+parslets.map { |p| # Save each parslet as potentially offending (raising an error). @offending_parslet = p p.apply(io) } rescue Parslet::ParseFailed error(io, "Failed to match sequence (#{self.inspect})") end precedence SEQUENCE def to_s_inner(prec) parslets.map { |p| p.to_s(prec) }.join(' ') end def error_tree Parslet::ErrorTree.new(self).tap { |t| t.children << @offending_parslet.error_tree if @offending_parslet } end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
parslet-0.11.0 | lib/parslet/atoms/sequence.rb |
parslet-0.10.1 | lib/parslet/atoms/sequence.rb |