From 3bfdfc869b5c9fcd8397710aa7b0d211d549aa45 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Fri, 25 Jan 2013 10:31:38 -0800 Subject: pushing specialization down to the optimized class --- .../lib/action_dispatch/routing/route_set.rb | 48 +++++++++++----------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index e2b2914cad..3e88b0d4c9 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -194,41 +194,43 @@ module ActionDispatch super end end - end - def initialize(route, options) - @options = options - @segment_keys = route.segment_keys - @route = route - end + private - def arg_size - @route.required_parts.size - end + def optimized_helper + string_route = @route.ast.to_s - def optimized_helper - string_route = @route.ast.to_s + while string_route.gsub!(/\([^\)]*\)/, "") + true + end + + @route.required_parts.each_with_index do |part, i| + # Replace each route parameter + # e.g. :id for regular parameter or *path for globbing + # with ruby string interpolation code + string_route.gsub!(/(\*|:)#{part}/, "\#{Journey::Router::Utils.escape_fragment(args[#{i}].to_param)}") + end - while string_route.gsub!(/\([^\)]*\)/, "") - true + string_route end - @route.required_parts.each_with_index do |part, i| - # Replace each route parameter - # e.g. :id for regular parameter or *path for globbing - # with ruby string interpolation code - string_route.gsub!(/(\*|:)#{part}/, "\#{Journey::Router::Utils.escape_fragment(args[#{i}].to_param)}") + def arg_size + @route.required_parts.size end - string_route + def optimize_routes_generation?(t) + t.send(:optimize_routes_generation?) + end end - def call(t, args) - t.url_for(handle_positional_args(t, args, @options, @segment_keys)) + def initialize(route, options) + @options = options + @segment_keys = route.segment_keys + @route = route end - def optimize_routes_generation?(t) - t.send(:optimize_routes_generation?) + def call(t, args) + t.url_for(handle_positional_args(t, args, @options, @segment_keys)) end def handle_positional_args(t, args, options, segment_keys) -- cgit v1.2.3