class ServiceWorker::Route

Constants

RouteMatch

Attributes

asset_pattern[R]
options[R]
path_pattern[R]

Public Class Methods

new(path_pattern, asset_pattern = nil, options = {}) click to toggle source
# File lib/serviceworker/route.rb, line 21
def initialize(path_pattern, asset_pattern = nil, options = {})
  if asset_pattern.is_a?(Hash)
    options = asset_pattern
    asset_pattern = nil
  end

  @path_pattern = path_pattern
  @asset_pattern = if self.class.webpacker?(options)
                     asset_pattern || options.fetch(:pack, path_pattern)
                   else
                     asset_pattern || options.fetch(:asset, path_pattern)
                   end
  @options = options
end
sprockets?(options) click to toggle source
# File lib/serviceworker/route.rb, line 17
def self.sprockets?(options)
  options.key?(:asset)
end
webpacker?(options) click to toggle source
# File lib/serviceworker/route.rb, line 13
def self.webpacker?(options)
  options.key?(:pack) && Handlers.webpacker?
end

Public Instance Methods

headers() click to toggle source
# File lib/serviceworker/route.rb, line 44
def headers
  @options.fetch(:headers, {})
end
match(path) click to toggle source
# File lib/serviceworker/route.rb, line 36
def match(path)
  raise ArgumentError, "path is required" if path.to_s.strip.empty?

  asset = resolver.call(path) or return nil

  RouteMatch.new(path, asset, headers, options)
end

Private Instance Methods

resolver() click to toggle source
# File lib/serviceworker/route.rb, line 50
def resolver
  @resolver ||= AssetResolver.new(path_pattern, asset_pattern)
end