class FriendlyRoutes::Parser

Public Class Methods

new(params, keep_all) click to toggle source
# File lib/friendly_routes/services/parser.rb, line 5
def initialize(params, keep_all)
  @params = params
  @keep_all = keep_all
  @route = @params[:friendly_route]
end

Public Instance Methods

call() click to toggle source
# File lib/friendly_routes/services/parser.rb, line 11
def call
  return unless @route
  @route.dynamic_params.each do |param|
    parse(param)
  end
end

Private Instance Methods

parse(param) click to toggle source
# File lib/friendly_routes/services/parser.rb, line 20
def parse(param)
  prefixed_name = FriendlyRoutes::PrefixedParam.new(param.name, @route.prefix).call
  value = @params[prefixed_name]
  return unless value
  @params[param.name] = param.parse(value)
  unless @keep_all
    @params.delete(prefixed_name) unless param.name == prefixed_name
    @params.delete(:friendly_route)
  end
end