5: def define_url_helper(route, name, kind, options)
6: selector = url_helper_name(name, kind)
7:
8:
9: hash_access_method = hash_access_name(name, kind)
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24: @module.module_eval "def \#{selector}(*args)\n\n\#{generate_optimisation_block(route, kind)}\nlocale = \#{route.segment_keys.include?(:locale) ? '{ :locale => I18n.locale || I18n.default_locale }' : '{}'}\n\nopts = if args.empty? || Hash === args.first\nargs.first || {}\nelse\noptions = args.extract_options!\n# args = args.zip(\#{route.segment_keys.inspect}).inject({}) do |h, (v, k)|\n\nsegments = \#{route.segment_keys.inspect}\n\#{'segments.delete(:locale) if segments.size > args.size' if route.segment_keys.include?(:locale)}\n\nargs = args.zip(segments).inject({}) do |h, (v, k)|\nh[k] = v\nh\nend\noptions.merge(args)\nend\n\n# url_for(\#{hash_access_method}(opts))\nurl_for(\#{hash_access_method}(locale.merge(opts)))\nend\nprotected :\#{selector}\n"
25: helpers << selector
26: end