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