class FriendlyRoutes::Composer

Compoer will map passed params to friendly_route params

Public Class Methods

new(route, params = {}) click to toggle source
# File lib/friendly_routes/services/composer.rb, line 6
def initialize(route, params = {})
  @route = route
  @params = params.dup
end

Public Instance Methods

call() click to toggle source
# File lib/friendly_routes/services/composer.rb, line 11
def call
  return unless @route
  @route.dynamic_params.each do |param|
    compose(param)
  end
  @params
end
can_be_composed?() click to toggle source
# File lib/friendly_routes/services/composer.rb, line 19
def can_be_composed?
  return unless @route
  @route.required_params.all? do |param|
    param.allowed? @params[param.name]
  end
end

Private Instance Methods

compose(param) click to toggle source
# File lib/friendly_routes/services/composer.rb, line 28
def compose(param)
  value = @params[param.name]
  return if value.nil? || param.refused?(value)
  prefixed_name = FriendlyRoutes::PrefixedParam.new(param.name, @route.prefix).call
  @params[prefixed_name] = param.compose(value)
  @params.delete(param.name) unless param.name == prefixed_name
end