diff options
Diffstat (limited to 'actionpack/lib/action_dispatch/vendor/rack-mount-0.6.6.pre/rack/mount/strexp.rb')
-rw-r--r-- | actionpack/lib/action_dispatch/vendor/rack-mount-0.6.6.pre/rack/mount/strexp.rb | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/actionpack/lib/action_dispatch/vendor/rack-mount-0.6.6.pre/rack/mount/strexp.rb b/actionpack/lib/action_dispatch/vendor/rack-mount-0.6.6.pre/rack/mount/strexp.rb deleted file mode 100644 index d0d8797008..0000000000 --- a/actionpack/lib/action_dispatch/vendor/rack-mount-0.6.6.pre/rack/mount/strexp.rb +++ /dev/null @@ -1,68 +0,0 @@ -require 'rack/mount/strexp/parser' - -module Rack::Mount - class Strexp - class << self - # Parses segmented string expression and converts it into a Regexp - # - # Strexp.compile('foo') - # # => %r{\Afoo\Z} - # - # Strexp.compile('foo/:bar', {}, ['/']) - # # => %r{\Afoo/(?<bar>[^/]+)\Z} - # - # Strexp.compile(':foo.example.com') - # # => %r{\A(?<foo>.+)\.example\.com\Z} - # - # Strexp.compile('foo/:bar', {:bar => /[a-z]+/}, ['/']) - # # => %r{\Afoo/(?<bar>[a-z]+)\Z} - # - # Strexp.compile('foo(.:extension)') - # # => %r{\Afoo(\.(?<extension>.+))?\Z} - # - # Strexp.compile('src/*files') - # # => %r{\Asrc/(?<files>.+)\Z} - def compile(str, requirements = {}, separators = [], anchor = true) - return Regexp.compile(str) if str.is_a?(Regexp) - - requirements = requirements ? requirements.dup : {} - normalize_requirements!(requirements, separators) - - parser = StrexpParser.new - parser.anchor = anchor - parser.requirements = requirements - - begin - re = parser.scan_str(str) - rescue Racc::ParseError => e - raise RegexpError, e.message - end - - Regexp.compile(re) - end - alias_method :new, :compile - - private - def normalize_requirements!(requirements, separators) - requirements.each do |key, value| - if value.is_a?(Regexp) - if regexp_has_modifiers?(value) - requirements[key] = value - else - requirements[key] = value.source - end - else - requirements[key] = Regexp.escape(value) - end - end - requirements.default ||= separators.any? ? - "[^#{separators.join}]+" : '.+' - requirements - end - - def regexp_has_modifiers?(regexp) - regexp.options & (Regexp::IGNORECASE | Regexp::EXTENDED) != 0 - end - end - end -end |