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)
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
error_msgs() click to toggle source
# File lib/parslet/atoms/re.rb, line 19
def error_msgs
  @error_msgs ||= {
    premature: 'Premature end of input',
    failed: "Failed to match #{match.inspect[1..-2]}"
  }
end
to_s_inner(prec) click to toggle source
# File lib/parslet/atoms/re.rb, line 37
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 26
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