Module: Reginald

Defined in:
lib/rack/mount/vendor/reginald/reginald.rb,
lib/rack/mount/vendor/reginald/reginald/atom.rb,
lib/rack/mount/vendor/reginald/reginald/group.rb,
lib/rack/mount/vendor/reginald/reginald/anchor.rb,
lib/rack/mount/vendor/reginald/reginald/parser.rb,
lib/rack/mount/vendor/reginald/reginald/character.rb,
lib/rack/mount/vendor/reginald/reginald/tokenizer.rb,
lib/rack/mount/vendor/reginald/reginald/expression.rb,
lib/rack/mount/vendor/reginald/reginald/alternation.rb,
lib/rack/mount/vendor/reginald/reginald/character_class.rb

Defined Under Namespace

Classes: Alternation, Anchor, Atom, Character, CharacterClass, Expression, Group, Parser

Class Method Summary collapse

Class Method Details

.compile(source) ⇒ Object



37
38
39
40
41
# File 'lib/rack/mount/vendor/reginald/reginald.rb', line 37

def compile(source)
  regexp = Regexp.compile(source)
  expression = parse(regexp)
  Regexp.compile(expression.to_s_without_options, expression.options)
end

.parse(regexp) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/rack/mount/vendor/reginald/reginald.rb', line 24

def parse(regexp)
  regexp = strip_extended_whitespace_and_comments(regexp)

  parser = Parser.new
  parser.capture_index = 0
  parser.capture_index_stack = []
  expression = parser.scan_str(regexp.source)

  expression.ignorecase = regexp.casefold?

  expression
end