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/options.rb,
lib/rack/mount/vendor/reginald/reginald/version.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, Options, Parser

Constant Summary collapse

Version =
'0.2.0'

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)



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

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

.parse(regexp) ⇒ Object

Parses Regexp and returns a Expression data structure.



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

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