class Scribble::Parsing::DelimitedChunk

Public Class Methods

new(delimiters, min_chars = 0) click to toggle source
# File lib/scribble/parsing/parser.rb, line 6
def initialize delimiters, min_chars = 0
  @delimiters = delimiters
  @min_chars = min_chars
end

Public Instance Methods

to_s_inner(prec) click to toggle source
# File lib/scribble/parsing/parser.rb, line 21
def to_s_inner(prec)
  "until('#{@delimiters.inspect}')"
end
try(source, context, consume_all) click to toggle source
# 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