class Parslet::Atoms::Re

Matches a special kind of regular expression that only ever matches one character at a time. Useful members of this family are: character ranges, \w, \d, \r, \n, ...

Example:

match('[a-z]')  # matches a-z
match('\s')     # like regexps: matches space characters

Attributes

match[R]
re[R]

Public Class Methods

new(match) click to toggle source
Calls superclass method
# File lib/parslet/atoms/re.rb, line 12
def initialize(match)
  super()

  @match = match.to_s
  @re    = Regexp.new(self.match, Regexp::MULTILINE)
  @error_msgs = {
    :premature  => "Premature end of input", 
    :failed     => "Failed to match #{match.inspect[1..-2]}"
  }
end

Public Instance Methods

accept(visitor) click to toggle source

Call back visitors visit_re method. See parslet/export for an example.

# File lib/parslet/atoms/visitor.rb, line 77
def accept(visitor)
  visitor.visit_re(match)
end
to_s_inner(prec) click to toggle source
# File lib/parslet/atoms/re.rb, line 34
def to_s_inner(prec)
  match.inspect[1..-2]
end
try(source, context, consume_all) click to toggle source
# File lib/parslet/atoms/re.rb, line 23
def try(source, context, consume_all)
  return succ(source.consume(1)) if source.matches?(@re)
  
  # No string could be read
  return context.err(self, source, @error_msgs[:premature])        if source.chars_left < 1
      
  # No match
  return context.err(self, source, @error_msgs[:failed])
end