Sha256: 1b10120a4daca9125910932dc915da8a5b35220e16afab9538c7744a27f85e3c
Contents?: true
Size: 1.02 KB
Versions: 1
Compression:
Stored size: 1.02 KB
Contents
module ServiceWorker class Route attr_reader :path, :options def initialize(path, options = {}) @path = path @options = options @pattern = compile(path) end def match?(path) @pattern =~ path end def asset_name @options.fetch(:asset, @path.gsub(%r{^/}, "")) rescue NoMethodError raise RouteError, "Cannot determine asset name from #{path.inspect}. Please specify the :asset option for this path." end def headers @options.fetch(:headers, {}) end private def compile(path) if path.respond_to?(:to_str) special_chars = %w[. + ( )] pattern = path.to_str.gsub(/([\*#{special_chars.join}])/) do |match| case match when "*" "(.*?)" when *special_chars Regexp.escape(match) else "([^/?&#]+)" end end /^#{pattern}$/ elsif path.respond_to?(:match) path else raise TypeError, path end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
serviceworker-rails-0.2.0 | lib/serviceworker/route.rb |