Skip to content

Commit

Permalink
Merge pull request rails#31 from bogdan/refactor
Browse files Browse the repository at this point in the history
Formatter#generate: decrese amount of Arrays
  • Loading branch information
tenderlove committed May 25, 2012
2 parents c1ac1e6 + 6687901 commit 8f7d3b0
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
17 changes: 8 additions & 9 deletions lib/journey/formatter.rb
Expand Up @@ -10,22 +10,19 @@ def initialize routes
@cache = nil
end

def generate key, name, options, recall = {}, parameterize = nil
def generate type, name, options, recall = {}, parameterize = nil
constraints = recall.merge options

match_route(name, constraints) do |route|
data = constraints.dup

keys_to_keep = route.parts.reverse.drop_while { |part|
!options.key?(part) || (options[part] || recall[part]).nil?
} | route.required_parts
}

(data.keys - keys_to_keep).each do |bad_key|
data.delete bad_key
parameterized_parts = constraints.dup.keep_if do |key, _|
keys_to_keep.include?(key) || route.required_parts.include?(key)
end

parameterized_parts = data.dup

if parameterize
parameterized_parts.each do |k,v|
parameterized_parts[k] = parameterize.call(k, v)
Expand All @@ -36,9 +33,11 @@ def generate key, name, options, recall = {}, parameterize = nil

next unless verify_required_parts!(route, parameterized_parts)

z = Hash[options.to_a - data.to_a - route.defaults.to_a]
params = options.dup.delete_if do |key, _|
parameterized_parts.key?(key) || route.defaults.key?(key)
end

return [route.format(parameterized_parts), z]
return [route.format(parameterized_parts), params]
end

raise Router::RoutingError
Expand Down
4 changes: 2 additions & 2 deletions lib/journey/route.rb
Expand Up @@ -67,8 +67,8 @@ def parts
alias :segment_keys :parts

def format path_options
(defaults.keys - required_parts).each do |key|
path_options.delete key if defaults[key].to_s == path_options[key].to_s
path_options.delete_if do |key, value|
value.to_s == defaults[key].to_s && !required_parts.include?(key)
end

Visitors::Formatter.new(path_options).accept(path.spec)
Expand Down

0 comments on commit 8f7d3b0

Please sign in to comment.