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/collection.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, Collection, Expression, Group, Parser

Class Method Summary collapse

Class Method Details

.compile(source) ⇒ Object

Recompiles Regexp by parsing it and turning it back into a Regexp.

(In the future Reginald will perform some Regexp optimizations such as removing unnecessary captures and options)



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

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

.parse(regexp) ⇒ Object

Parses Regexp and returns a Expression data structure.



30
31
32
# File 'lib/rack/mount/vendor/reginald/reginald.rb', line 30

def parse(regexp)
  Parser.parse_regexp(regexp)
end