Class: RegexpExamples::Parser

Inherits:
Object
  • Object
show all
Includes:
CharsetNegationHelper, ParseAfterBackslashGroupHelper, ParseGroupHelper, ParseMultiGroupHelper, ParseRepeaterHelper
Defined in:
lib/regexp-examples/parser.rb

Overview

A Regexp parser, used to build a structured collection of objects that represents the regular expression. This object can then be used to generate strings that match the regular expression.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from CharsetNegationHelper

#negate_if

Constructor Details

#initialize(regexp_string, regexp_options) ⇒ Parser

Returns a new instance of Parser.



22
23
24
25
26
27
28
29
# File 'lib/regexp-examples/parser.rb', line 22

def initialize(regexp_string, regexp_options)
  @regexp_string = regexp_string
  @ignorecase = !(regexp_options & Regexp::IGNORECASE).zero?
  @multiline = !(regexp_options & Regexp::MULTILINE).zero?
  @extended = !(regexp_options & Regexp::EXTENDED).zero?
  @num_groups = 0
  @current_position = 0
end

Instance Attribute Details

#regexp_stringObject (readonly)

Returns the value of attribute regexp_string.



20
21
22
# File 'lib/regexp-examples/parser.rb', line 20

def regexp_string
  @regexp_string
end

Instance Method Details

#parseObject



31
32
33
34
35
36
37
38
39
40
# File 'lib/regexp-examples/parser.rb', line 31

def parse
  repeaters = [PlaceHolderGroup.new]
  until end_of_regexp
    group = parse_group(repeaters)
    return [group] if group.is_a? OrGroup
    @current_position += 1
    repeaters << parse_repeater(group)
  end
  repeaters
end