class AssetPipelineRoutes::Path

Constants

DEFAULT_REPLACEMENT

Attributes

route[RW]

Public Class Methods

new(route_str) click to toggle source
# File lib/asset_pipeline_routes/path.rb, line 16
def initialize route_str
  @route = route_str
end
proc_for_route(route) click to toggle source
# File lib/asset_pipeline_routes/path.rb, line 8
def self.proc_for_route route
  proc { |id_replacement = DEFAULT_REPLACEMENT, *args|
    proc { |route, replacement, *mapping|
      Path.new(route.path.ast.to_s).build replacement, *mapping
    }.curry[route].call(id_replacement, *args)
  }
end

Public Instance Methods

apply_format(options = {}) click to toggle source
# File lib/asset_pipeline_routes/path.rb, line 20
def apply_format options = {}
  @route = @route.sub(/\(\.:\w+\)/,format(options))
end
build(*args) click to toggle source
# File lib/asset_pipeline_routes/path.rb, line 24
def build *args
  apply_format args.extract_options!
  clean = replacements(*args).inject(@route) { |route, param|
    route.sub(/:(\w+)/, param.to_s)
  }
  return "'#{clean}'"
end
default_replacements() click to toggle source
# File lib/asset_pipeline_routes/path.rb, line 38
def default_replacements
  Array.new(number_of_replacements, DEFAULT_REPLACEMENT)
end
format(options) click to toggle source
# File lib/asset_pipeline_routes/path.rb, line 32
def format options
  str = options.fetch(:format) { '' }
  str = ".#{str}" unless str.empty? && str[0] != '.'
  str
end
number_of_replacements() click to toggle source
# File lib/asset_pipeline_routes/path.rb, line 48
def number_of_replacements
  @route.scan(/:(\w+)/).inject(0) { |sum, n| sum + 1 }
end
replacements(*args) click to toggle source
# File lib/asset_pipeline_routes/path.rb, line 42
def replacements *args
  defaults = default_replacements
  defaults[0...args.length] = args.map { |item| (item != DEFAULT_REPLACEMENT) ? "'+#{item}+'" : item }
  defaults
end