i18n_routing 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
1
  source "http://rubygems.org"
2
- gem 'rails', '3.1.0'
3
- gem 'rspec', '>=2.5.0'
2
+ gem 'rails', '3.2.1'
3
+ gem 'rspec', '>=2.8.0'
data/Gemfile.lock CHANGED
@@ -1,84 +1,82 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (3.1.0)
5
- actionpack (= 3.1.0)
6
- mail (~> 2.3.0)
7
- actionpack (3.1.0)
8
- activemodel (= 3.1.0)
9
- activesupport (= 3.1.0)
4
+ actionmailer (3.2.1)
5
+ actionpack (= 3.2.1)
6
+ mail (~> 2.4.0)
7
+ actionpack (3.2.1)
8
+ activemodel (= 3.2.1)
9
+ activesupport (= 3.2.1)
10
10
  builder (~> 3.0.0)
11
11
  erubis (~> 2.7.0)
12
- i18n (~> 0.6)
13
- rack (~> 1.3.2)
14
- rack-cache (~> 1.0.3)
15
- rack-mount (~> 0.8.2)
12
+ journey (~> 1.0.1)
13
+ rack (~> 1.4.0)
14
+ rack-cache (~> 1.1)
16
15
  rack-test (~> 0.6.1)
17
- sprockets (~> 2.0.0)
18
- activemodel (3.1.0)
19
- activesupport (= 3.1.0)
20
- bcrypt-ruby (~> 3.0.0)
16
+ sprockets (~> 2.1.2)
17
+ activemodel (3.2.1)
18
+ activesupport (= 3.2.1)
21
19
  builder (~> 3.0.0)
22
- i18n (~> 0.6)
23
- activerecord (3.1.0)
24
- activemodel (= 3.1.0)
25
- activesupport (= 3.1.0)
26
- arel (~> 2.2.1)
20
+ activerecord (3.2.1)
21
+ activemodel (= 3.2.1)
22
+ activesupport (= 3.2.1)
23
+ arel (~> 3.0.0)
27
24
  tzinfo (~> 0.3.29)
28
- activeresource (3.1.0)
29
- activemodel (= 3.1.0)
30
- activesupport (= 3.1.0)
31
- activesupport (3.1.0)
25
+ activeresource (3.2.1)
26
+ activemodel (= 3.2.1)
27
+ activesupport (= 3.2.1)
28
+ activesupport (3.2.1)
29
+ i18n (~> 0.6)
32
30
  multi_json (~> 1.0)
33
- arel (2.2.1)
34
- bcrypt-ruby (3.0.1)
31
+ arel (3.0.0)
35
32
  builder (3.0.0)
36
33
  diff-lcs (1.1.3)
37
34
  erubis (2.7.0)
38
35
  hike (1.2.1)
39
36
  i18n (0.6.0)
40
- mail (2.3.0)
37
+ journey (1.0.1)
38
+ json (1.6.5)
39
+ mail (2.4.1)
41
40
  i18n (>= 0.4.0)
42
41
  mime-types (~> 1.16)
43
42
  treetop (~> 1.4.8)
44
- mime-types (1.16)
45
- multi_json (1.0.3)
46
- polyglot (0.3.2)
47
- rack (1.3.2)
48
- rack-cache (1.0.3)
43
+ mime-types (1.17.2)
44
+ multi_json (1.0.4)
45
+ polyglot (0.3.3)
46
+ rack (1.4.1)
47
+ rack-cache (1.1)
49
48
  rack (>= 0.4)
50
- rack-mount (0.8.3)
51
- rack (>= 1.0.0)
52
49
  rack-ssl (1.3.2)
53
50
  rack
54
51
  rack-test (0.6.1)
55
52
  rack (>= 1.0)
56
- rails (3.1.0)
57
- actionmailer (= 3.1.0)
58
- actionpack (= 3.1.0)
59
- activerecord (= 3.1.0)
60
- activeresource (= 3.1.0)
61
- activesupport (= 3.1.0)
53
+ rails (3.2.1)
54
+ actionmailer (= 3.2.1)
55
+ actionpack (= 3.2.1)
56
+ activerecord (= 3.2.1)
57
+ activeresource (= 3.2.1)
58
+ activesupport (= 3.2.1)
62
59
  bundler (~> 1.0)
63
- railties (= 3.1.0)
64
- railties (3.1.0)
65
- actionpack (= 3.1.0)
66
- activesupport (= 3.1.0)
60
+ railties (= 3.2.1)
61
+ railties (3.2.1)
62
+ actionpack (= 3.2.1)
63
+ activesupport (= 3.2.1)
67
64
  rack-ssl (~> 1.3.2)
68
65
  rake (>= 0.8.7)
69
66
  rdoc (~> 3.4)
70
67
  thor (~> 0.14.6)
71
- rake (0.9.2)
72
- rdoc (3.9.4)
73
- rspec (2.6.0)
74
- rspec-core (~> 2.6.0)
75
- rspec-expectations (~> 2.6.0)
76
- rspec-mocks (~> 2.6.0)
77
- rspec-core (2.6.4)
78
- rspec-expectations (2.6.0)
68
+ rake (0.9.2.2)
69
+ rdoc (3.12)
70
+ json (~> 1.4)
71
+ rspec (2.8.0)
72
+ rspec-core (~> 2.8.0)
73
+ rspec-expectations (~> 2.8.0)
74
+ rspec-mocks (~> 2.8.0)
75
+ rspec-core (2.8.0)
76
+ rspec-expectations (2.8.0)
79
77
  diff-lcs (~> 1.1.2)
80
- rspec-mocks (2.6.0)
81
- sprockets (2.0.0)
78
+ rspec-mocks (2.8.0)
79
+ sprockets (2.1.2)
82
80
  hike (~> 1.2)
83
81
  rack (~> 1.0)
84
82
  tilt (~> 1.1, != 1.3.0)
@@ -87,11 +85,11 @@ GEM
87
85
  treetop (1.4.10)
88
86
  polyglot
89
87
  polyglot (>= 0.3.1)
90
- tzinfo (0.3.29)
88
+ tzinfo (0.3.31)
91
89
 
92
90
  PLATFORMS
93
91
  ruby
94
92
 
95
93
  DEPENDENCIES
96
- rails (= 3.1.0)
97
- rspec (>= 2.5.0)
94
+ rails (= 3.2.1)
95
+ rspec (>= 2.8.0)
data/Rakefile CHANGED
@@ -26,3 +26,6 @@ task :rails3_spec do
26
26
  @rails_spec_version = 3
27
27
  Rake::Task['spec'].invoke
28
28
  end
29
+
30
+ Bundler::GemHelper.install_tasks
31
+
data/lib/i18n_routing.rb CHANGED
@@ -3,6 +3,8 @@ require 'i18n_routing_common'
3
3
 
4
4
  if Rails.version < '3'
5
5
  require 'i18n_routing_rails2'
6
+ elsif Rails.version >= '3.2'
7
+ require 'i18n_routing_rails32'
6
8
  else
7
- require 'i18n_routing_rails3'
9
+ require 'i18n_routing_rails31'
8
10
  end
@@ -0,0 +1,435 @@
1
+ # encoding: utf-8
2
+ require 'journey'
3
+ require 'action_dispatch'
4
+ require 'active_support/core_ext/module'
5
+
6
+ module I18nRouting
7
+ module Mapper
8
+
9
+ private
10
+
11
+ # Just create a Mapper:Resource with given parameters
12
+ def resource_from_params(type, *resources)
13
+ res = resources.clone
14
+
15
+ options = res.extract_options!
16
+ r = res.first
17
+
18
+ type == :resource ? ActionDispatch::Routing::Mapper::SingletonResource.new(r, options.dup) : ActionDispatch::Routing::Mapper::Resource.new(r, options.dup)
19
+ end
20
+
21
+ # Localize a resources or a resource
22
+ def localized_resources(type = :resources, *resources, &block)
23
+ localizable_route = nil
24
+
25
+ if @locales
26
+ res = resources.clone
27
+
28
+ options = res.extract_options!
29
+ r = res.first
30
+
31
+ resource = resource_from_params(type, r, options.dup)
32
+
33
+ # Check for translated resource
34
+ stored_locale = I18n.locale
35
+ @locales.each do |locale|
36
+ I18n.locale = locale
37
+ localized_path = I18nRouting.translation_for(resource.name, type)
38
+
39
+ # A translated route exists :
40
+ if !localized_path.blank? and String === localized_path
41
+ puts("[I18n] > localize %-10s: %40s (%s) => /%s" % [type, resource.name, locale, localized_path]) if @i18n_verbose
42
+ opts = options.dup
43
+ opts[:path] = localized_path
44
+ opts[:controller] ||= r.to_s.pluralize
45
+
46
+ resource = resource_from_params(type, r, opts.dup)
47
+
48
+ res = ["#{I18nRouting.locale_escaped(locale)}_#{r}".to_sym, opts]
49
+
50
+ constraints = opts[:constraints] ? opts[:constraints].dup : {}
51
+ constraints[:i18n_locale] = locale.to_s
52
+
53
+ scope(:constraints => constraints, :path_names => I18nRouting.path_names(resource.name, @scope)) do
54
+ localized_branch(locale) do
55
+ send(type, *res) do
56
+
57
+ # In the resource(s) block, we need to keep and restore some context :
58
+ if block
59
+ old_name = @scope[:i18n_real_resource_name]
60
+ old = @scope[:scope_level_resource]
61
+
62
+ @scope[:i18n_real_resource_name] = resource.name
63
+ @scope[:i18n_scope_level_resource] = old
64
+ @scope[:scope_level_resource] = resource
65
+
66
+ if type == :resource and @scope[:name_prefix]
67
+ # Need to fake name_prefix for singleton resource
68
+ @scope[:name_prefix] = @scope[:name_prefix].gsub(Regexp.new("#{old.name}$"), resource.name)
69
+ end
70
+
71
+ block.call if block
72
+
73
+ @scope[:scope_level_resource] = old
74
+ @scope[:i18n_real_resource_name] = old_name
75
+ end
76
+
77
+ @scope[:i18n_scope_level_resource] = nil
78
+
79
+ end
80
+ end
81
+ end
82
+
83
+ localizable_route = resource
84
+ end
85
+ end
86
+ I18n.locale = stored_locale
87
+ end
88
+ return localizable_route
89
+ end
90
+
91
+ # Set if the next route created will be a localized route or not
92
+ # If yes, localizable is a name, or a Mapper::Resource
93
+ # Can take a block, if so, save the current context, set the new
94
+ # Call the block, then restore the old context and return the block return
95
+ def set_localizable_route(localizable)
96
+ if block_given?
97
+ old = @set.named_routes.localizable
98
+ @set.named_routes.set_localizable_route(localizable)
99
+ r = yield
100
+ @set.named_routes.set_localizable_route(old)
101
+ return r
102
+ else
103
+ @set.named_routes.set_localizable_route(localizable)
104
+ end
105
+ end
106
+
107
+ def localizable_route
108
+ @set.named_routes.localizable
109
+ end
110
+
111
+ # Return the aproximate deep in scope level
112
+ def nested_deep
113
+ (@scope and Array === @scope[:nested_deep] and @scope[:scope_level]) ? @scope[:nested_deep].size : 0
114
+ end
115
+
116
+ public
117
+
118
+ # On Routing::Mapper initialization (when doing Application.routes.draw do ...)
119
+ # prepare routing system to be i18n ready
120
+ def initialize_with_i18n_routing(*args)
121
+ initialize_without_i18n_routing(*args)
122
+
123
+ # Add i18n_locale as valid conditions for Rack::Mount / And add also :locale, as Rails 3.0.4 removed it ...
124
+ @valid_conditions = @set.instance_eval { @set }.instance_eval { @valid_conditions }
125
+ [:i18n_locale, :locale].each do |k|
126
+ @set.valid_conditions[k] = true if !@set.valid_conditions.has_key?(k)
127
+ end
128
+
129
+ # Extends the current RouteSet in order to define localized helper for named routes
130
+ # When calling define_url_helper, it calls define_localized_url_helper too.
131
+ if !@set.named_routes.respond_to?(:define_localized_url_helper)
132
+ @set.named_routes.class_eval <<-END_EVAL, __FILE__, __LINE__ + 1
133
+ alias_method :localized_define_url_helper, :define_url_helper
134
+ def define_url_helper(route, name, kind, options)
135
+ localized_define_url_helper(route, name, kind, options)
136
+ define_localized_url_helper(route, name, kind, options)
137
+ end
138
+ END_EVAL
139
+
140
+ @set.named_routes.extend I18nRouting::NamedRouteCollection
141
+ end
142
+ end
143
+
144
+ # Rails 3 routing system
145
+ # Create a block for localized routes, in your routes.rb :
146
+ #
147
+ # localized do
148
+ # resources :users
149
+ # match 'about' => 'contents#about', :as => :about
150
+ # end
151
+ #
152
+ def localized(locales = I18n.available_locales, opts = {})
153
+ # Add if not added Rails.root/config/locales/*.yml in the I18n.load_path
154
+ if !@i18n_routing_path_set and defined?(Rails) and Rails.respond_to?(:root) and Rails.root
155
+ I18n.load_path = (I18n.load_path << Dir[Rails.root.join('config', 'locales', '*.yml')]).flatten.uniq
156
+ @i18n_routing_path_set = true
157
+ end
158
+
159
+ old_value = @locales
160
+ @locales = locales
161
+ @i18n_verbose ||= opts.delete(:verbose)
162
+ yield
163
+ ensure
164
+ @locales = old_value
165
+ end
166
+
167
+ # Create a branch for create routes in the specified locale
168
+ def localized_branch(locale)
169
+ set_localizable_route(nil) do
170
+ old = @localized_branch
171
+ @localized_branch = locale
172
+ localized([locale]) do
173
+ yield
174
+ end
175
+ @localized_branch = old
176
+ end
177
+ end
178
+
179
+ # Set we do not want to localize next resource
180
+ def skip_localization
181
+ old = @skip_localization
182
+ @skip_localization = @localized_branch ? nil : true
183
+ yield
184
+ @skip_localization = old
185
+ end
186
+
187
+
188
+
189
+ # Overrides match method
190
+ # Two variants of match are supported now
191
+ # match 'about' => 'pages#about', :as => 'about'
192
+ # match 'about', :to => 'pages#about'
193
+ # match 'home', :to => 'pages#home', :as => 'main' # Route name overridden to 'main'
194
+ def match(*args)
195
+ # Localize simple match only if there is no resource scope.
196
+ if @locales and (args.size >= 1) and !parent_resource and
197
+ args.last.is_a?(Hash) # In both variants Hash should be present as last parameter
198
+
199
+ # Make deep copy of last argument (Hash)
200
+ options = Marshal.load(Marshal.dump(args.last)) # Dump is dirty but how to make deep cloning easily ? :/
201
+
202
+ # Now handle parameters
203
+ if (args.first.is_a?(Hash))
204
+ path, to = options.find { |name, value| name.is_a?(String) }
205
+ options.merge!(:to => to).delete(path)
206
+ else
207
+ path = args[0]
208
+ options[:as] ||= path
209
+ end
210
+
211
+ if (options[:as])
212
+ @locales.each do |locale|
213
+ mapping = LocalizedMapping.new(locale, @set, @scope, path, options)
214
+ if mapping.localizable?
215
+ puts("[I18n] > localize %-10s: %40s (%s) => %s" % ['route', options[:as], locale, mapping.path]) if @i18n_verbose
216
+ @set.add_route(*mapping.to_route)
217
+ end
218
+ end
219
+
220
+ # Now, create the real match :
221
+ return set_localizable_route(options[:as]) do
222
+ super
223
+ end
224
+ end
225
+ end
226
+
227
+ super
228
+ end
229
+
230
+ def create_globalized_resources(type, *resources, &block)
231
+ #puts "#{' ' * nested_deep}Call #{type} : #{resources.inspect} (#{@locales.inspect}) (#{@localized_branch}) (#{@skip_localization})"
232
+
233
+ @scope[:nested_deep] ||= []
234
+ @scope[:nested_deep] << 1
235
+
236
+ cur_scope = nil
237
+ if @locales
238
+ localized = localized_resources(type, *resources, &block) if !@skip_localization
239
+
240
+ ## We do not translate if we are in a translation branch :
241
+ return if localized and nested_deep > 0
242
+
243
+ # Set the current standard resource in order to customize url helper :
244
+ if !@localized_branch
245
+ r = resource_from_params(type, *resources)
246
+ cur_scope = (parent_resource and parent_resource.name == r.name) ? parent_resource : r
247
+ end
248
+ end
249
+
250
+ set_localizable_route(cur_scope) do
251
+ skip_localization do
252
+ #puts "#{' ' * nested_deep} \\- Call original #{type} : for #{resources.inspect}}"
253
+ send("#{type}_without_i18n_routing".to_sym, *resources, &block)
254
+ end
255
+ end
256
+
257
+ @scope[:nested_deep].pop
258
+ end
259
+
260
+ # Alias methods in order to handle i18n routes
261
+ def self.included(mod)
262
+ mod.send :alias_method_chain, :initialize, :i18n_routing
263
+ mod.send :alias_method_chain, :resource, :i18n_routing
264
+ mod.send :alias_method_chain, :resources, :i18n_routing
265
+
266
+ # Here we redefine some methods, in order to handle
267
+ # correct path_names translation on the fly
268
+ [:map_method, :member, :collection].each do |m|
269
+ rfname = "#{m}_without_i18n_routing".to_sym
270
+ mod.send :define_method, "#{m}_with_i18n_routing".to_sym do |*args, &block|
271
+ if @localized_branch and @scope[:i18n_scope_level_resource] and @scope[:i18n_real_resource_name]
272
+ o = @scope[:scope_level_resource]
273
+ @scope[:scope_level_resource] = @scope[:i18n_scope_level_resource]
274
+
275
+ pname = @scope[:path_names] || {}
276
+ i = 1
277
+ while i < args.size and (String === args[i] or Symbol === args[i])
278
+ pname[args[i]] = args[i]
279
+ i += 1
280
+ end
281
+ scope(:path_names => I18nRouting.path_names(@scope[:i18n_real_resource_name], {:path_names => pname})) do
282
+ send(rfname, *args, &block)
283
+ end
284
+ @scope[:scope_level_resource] = o
285
+ return
286
+ end
287
+
288
+ send(rfname, *args, &block)
289
+ end
290
+
291
+ mod.send :alias_method_chain, m, :i18n_routing
292
+ end
293
+ end
294
+
295
+ def resource_with_i18n_routing(*resources, &block)
296
+ create_globalized_resources(:resource, *resources, &block)
297
+ end
298
+
299
+ def resources_with_i18n_routing(*resources, &block)
300
+ create_globalized_resources(:resources, *resources, &block)
301
+ end
302
+ end
303
+
304
+ # Used for localize simple named routes
305
+ class LocalizedMapping < ActionDispatch::Routing::Mapper::Mapping
306
+ attr_reader :path
307
+
308
+ def initialize(locale, set, scope, path, options)
309
+ super(set, scope, path.clone, options ? options.clone : nil)
310
+ stored_locale = I18n.locale
311
+
312
+ # try to get translated path :
313
+ I18n.locale = locale
314
+ ts = @path.gsub(/^\//, '')
315
+ ts.gsub!('(.:format)', '')
316
+
317
+ tp = @options[:as] && I18nRouting.translation_for(@options[:as], :named_routes) ||
318
+ !ts.blank? && I18nRouting.translation_for(ts, :named_routes_path) || ts
319
+
320
+ localized_scope = I18nRouting.translation_for(@scope[:path].gsub(/\//, ''), :scopes) if @scope[:path]
321
+ path = localized_scope ? '/' << localized_scope : @scope[:path]
322
+ @localized_path = File.join((path || ''), tp).gsub(/\/$/, '')
323
+
324
+ # If a translated path exists, set localized infos
325
+ if !@localized_path.blank? and @localized_path != @path
326
+ #@options[:controller] ||= @options[:as]
327
+ @options[:as] = "#{I18nRouting.locale_escaped(locale)}_#{@options[:as]}"
328
+ @path = @localized_path
329
+ @options[:constraints] = @options[:constraints] ? @options[:constraints].dup : {}
330
+ @options[:constraints][:i18n_locale] = locale.to_s
331
+ @options[:anchor] = true
332
+ # Force the recomputation of the requirements with the new values
333
+ @requirements = nil
334
+ else
335
+ @localized_path = nil
336
+ end
337
+ I18n.locale = stored_locale
338
+ end
339
+
340
+ # Return true if this route is localizable
341
+ def localizable?
342
+ @localized_path != nil
343
+ end
344
+ end
345
+
346
+ module NamedRouteCollection
347
+ attr_reader :localizable
348
+
349
+ def set_localizable_route(localizable)
350
+ @localizable = localizable
351
+ end
352
+
353
+ # Alias named route helper in order to check if a localized helper exists
354
+ # If not use the standard one.
355
+ def define_localized_url_helper(route, name, kind, options)
356
+ if n = localizable
357
+ selector = url_helper_name(name, kind)
358
+
359
+ rlang = if n.kind_of?(ActionDispatch::Routing::Mapper::Resources::Resource) and i = name.to_s.rindex("_#{n.plural}")
360
+ "#{selector.to_s[0, i]}_glang_#{n.plural}#{selector.to_s[i + "_#{n.plural}".size, selector.to_s.size]}"
361
+ elsif n.kind_of?(ActionDispatch::Routing::Mapper::Resources::Resource) and i = name.to_s.rindex("_#{n.singular}")
362
+ "#{selector.to_s[0, i]}_glang_#{n.singular}#{selector.to_s[i + "_#{n.singular}".size, selector.to_s.size]}"
363
+ else
364
+ "glang_#{selector}"
365
+ end
366
+
367
+ @module.module_eval <<-end_eval # We use module_eval to avoid leaks
368
+ alias_method :localized_#{selector}, :#{selector}
369
+
370
+ def #{selector}(*args)
371
+ selector_g = '#{rlang}'.gsub('glang', I18nRouting.locale_escaped(I18n.locale.to_s)).to_sym
372
+
373
+ #puts "Call routes : #{selector} => \#{selector_g} (\#{I18n.locale}) "
374
+ if respond_to? selector_g and selector_g != :#{selector}
375
+ send(selector_g, *args)
376
+ else
377
+ localized_#{selector}(*args)
378
+ end
379
+ end
380
+
381
+ end_eval
382
+
383
+ end
384
+ end
385
+ end
386
+
387
+ # Journey::Route module
388
+ # Exists in order to use appropriate localized route when using url_for
389
+ module JourneyRoute
390
+ # Alias methods in order to handle i18n routes
391
+ def self.included(mod)
392
+ mod.send :alias_method_chain, :format, :i18n_routing
393
+ mod.send :alias_method_chain, :initialize, :i18n_routing
394
+ end
395
+
396
+ # During route initialization, if a condition i18n_locale is present
397
+ # Delete it, store it in @locale, and add it to @defaults
398
+ def initialize_with_i18n_routing(name, app, path, constraints, defaults = {})
399
+ @locale = if constraints.key?(:i18n_locale)
400
+ c = defaults[:i18n_locale] = constraints.delete(:i18n_locale)
401
+ # In rails 3.0 it's a regexp otherwise it's a string, so we need to call source on the regexp
402
+ (c.respond_to?(:source) ? c.source : c).to_sym
403
+ else
404
+ nil
405
+ end
406
+ initialize_without_i18n_routing(name, app, path, constraints, defaults)
407
+ end
408
+
409
+ # Called for dynamic route generation
410
+ # If a @locale is present and if this locale is not the current one
411
+ # => return nil and refuse to generate the route
412
+ def format_with_i18n_routing(path_options)
413
+ return nil if @locale and @locale != I18n.locale.to_sym
414
+ format_without_i18n_routing(path_options)
415
+ end
416
+ end
417
+
418
+
419
+ # Journey::Formatter module
420
+ # Exists in order to inject the current locale in the routing options
421
+ module JourneyFormatter
422
+ def self.included(mod)
423
+ mod.send :alias_method_chain, :non_recursive, :i18n_routing
424
+ end
425
+
426
+ def non_recursive_with_i18n_routing(cache, options)
427
+ options << [:i18n_locale, I18n.locale.to_s]
428
+ non_recursive_without_i18n_routing(cache, options)
429
+ end
430
+ end
431
+ end
432
+
433
+ ActionDispatch::Routing::Mapper.send :include, I18nRouting::Mapper
434
+ Journey::Route.send :include, I18nRouting::JourneyRoute
435
+ Journey::Formatter.send :include, I18nRouting::JourneyFormatter
data/spec/spec_helper.rb CHANGED
@@ -28,7 +28,11 @@ else
28
28
  gem 'actionpack', '> 2.9'
29
29
  require 'action_controller'
30
30
  require 'action_dispatch'
31
- require 'rack/mount'
31
+ if Rails.version < '3.2'
32
+ require 'rack/mount'
33
+ else
34
+ require 'journey'
35
+ end
32
36
  require 'active_support/core_ext/hash/slice.rb'
33
37
  end
34
38
 
metadata CHANGED
@@ -1,100 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: i18n_routing
3
- version: !ruby/object:Gem::Version
4
- hash: 11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 5
9
- - 0
10
- version: 0.5.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Guillaume Luccisano
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-09-13 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: i18n
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &80783030 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">"
28
- - !ruby/object:Gem::Version
29
- hash: 25
30
- segments:
31
- - 0
32
- - 3
33
- - 5
18
+ requirements:
19
+ - - ! '>'
20
+ - !ruby/object:Gem::Version
34
21
  version: 0.3.5
35
22
  type: :runtime
36
- version_requirements: *id001
37
- description: I18n_routing is a plugin for Ruby on Rails that lets you easily translate your routes trough the I18n api included in Rails since version 2.2
23
+ prerelease: false
24
+ version_requirements: *80783030
25
+ description: I18n_routing is a plugin for Ruby on Rails that lets you easily translate
26
+ your routes trough the I18n api included in Rails since version 2.2
38
27
  email: guillaume.luccisano@gmail.com
39
28
  executables: []
40
-
41
29
  extensions: []
42
-
43
30
  extra_rdoc_files: []
44
-
45
- files:
31
+ files:
46
32
  - lib/i18n_routing.rb
47
- - lib/i18n_routing_common.rb
33
+ - lib/i18n_routing_rails32.rb
34
+ - lib/i18n_routing_rails31.rb
48
35
  - lib/i18n_routing_rails2.rb
49
- - lib/i18n_routing_rails3.rb
50
- - spec/i18n_routing/i18n_spec.rb
51
- - spec/locales/de.yml
52
- - spec/locales/en.yml
53
- - spec/locales/fr.yml
36
+ - lib/i18n_routing_common.rb
54
37
  - spec/locales/pt-br.yml
38
+ - spec/locales/fr.yml
39
+ - spec/locales/en.yml
40
+ - spec/locales/de.yml
41
+ - spec/i18n_routing/i18n_spec.rb
55
42
  - spec/spec_helper.rb
56
- - CHANGELOG.rdoc
57
43
  - Gemfile
58
44
  - Gemfile.lock
59
45
  - MIT-LICENSE
60
- - Rakefile
61
46
  - README.rdoc
47
+ - CHANGELOG.rdoc
48
+ - Rakefile
62
49
  - init.rb
63
- has_rdoc: true
64
50
  homepage: http://github.com/kwi/i18n_routing
65
51
  licenses: []
66
-
67
52
  post_install_message:
68
53
  rdoc_options: []
69
-
70
- require_paths:
54
+ require_paths:
71
55
  - lib
72
- required_ruby_version: !ruby/object:Gem::Requirement
56
+ required_ruby_version: !ruby/object:Gem::Requirement
73
57
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 3
78
- segments:
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ segments:
79
63
  - 0
80
- version: "0"
81
- required_rubygems_version: !ruby/object:Gem::Requirement
64
+ hash: 647656513
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
66
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 19
87
- segments:
88
- - 1
89
- - 3
90
- - 4
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
91
70
  version: 1.3.4
92
71
  requirements: []
93
-
94
72
  rubyforge_project: i18n_routing
95
- rubygems_version: 1.4.2
73
+ rubygems_version: 1.8.10
96
74
  signing_key:
97
75
  specification_version: 3
98
- summary: I18n routing module for Rails 2.3.x and Rails 3. Translate your routes with ease !
76
+ summary: I18n routing module for Rails 2.3.x and Rails 3. Translate your routes with
77
+ ease !
99
78
  test_files: []
100
-