Class: Scribble::Parsing::DelimitedChunk

Inherits:
Parslet::Atoms::Base
  • Object
show all
Defined in:
lib/scribble/parsing/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(delimiters, min_chars = 0) ⇒ DelimitedChunk

Returns a new instance of DelimitedChunk.



6
7
8
9
# File 'lib/scribble/parsing/parser.rb', line 6

def initialize delimiters, min_chars = 0
  @delimiters = delimiters
  @min_chars = min_chars
end

Instance Method Details

#to_s_inner(prec) ⇒ Object



21
22
23
# File 'lib/scribble/parsing/parser.rb', line 21

def to_s_inner(prec)
  "until('#{@delimiters.inspect}')"
end

#try(source, context, consume_all) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/scribble/parsing/parser.rb', line 11

def try(source, context, consume_all)
  excluding_length = @delimiters.map {|d| source.chars_until(d) }.min

  if excluding_length >= @min_chars
    return succ(source.consume([excluding_length, 100000].min)) # max 100000 character atom, otherwise error in resulting regexp
  else
    return context.err(self, source, "No such string in input: #{@delimiters.inspect}.")
  end
end