routing_filter_locale_unless_api 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3e6ee61a8e181f5b9875a48198e9eb9c1b22617b
4
+ data.tar.gz: 921940fa6e4ded33872836228978d15e928d1b02
5
+ SHA512:
6
+ metadata.gz: 2d690125fd63264396edab5c4c662051473ecd40d18c3bc6a3413b285cbf891bdd8545764542277b66ed52af883d6c3cbcefacfb3e28d52532b622d39817dd09
7
+ data.tar.gz: 9a74adef77f118e9b7b065b0f50139125460c1938a621bedbceaef187454dd9446144faa98c92645089e0e7a1e4ee6573042d0b42def574b05c681b5bceb0cdd
@@ -6,6 +6,9 @@
6
6
 
7
7
  [full changelog](https://github.com/ZenCocoon/routing_filter_locale_unless_api/compare/v0.2.1...v0.2.2)
8
8
 
9
+ * Fix
10
+ * Fix Gem dependencies.
11
+
9
12
  ### 0.2.1 / 2012-02-18
10
13
 
11
14
  [full changelog](https://github.com/ZenCocoon/routing_filter_locale_unless_api/compare/v0.2.0...v0.2.1)
data/README.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # Routing Filter, Locale Unless API [![build status](http://travis-ci.org/ZenCocoon/routing_filter_locale_unless_api.png)](http://travis-ci.org/ZenCocoon/routing_filter_locale_unless_api)
2
2
 
3
+ ## Deprecated with Rails 4+
4
+
5
+ Since Rails 4+, the router changed and there's more flexible way to do this:
6
+
7
+ In your `congfig/routes.rb`:
8
+
9
+ * put all in the locale scope (except the root)
10
+ * add route for locale's only path
11
+
12
+ ```ruby
13
+ scope "(:locale)", locale: /([a-zA-Z]{2}[-_])?[a-zA-Z]{2}/ do
14
+ end
15
+
16
+ get '/en', to: redirect('/')
17
+ get '/:locale' => 'home#index', locale: /([a-zA-Z]{2}[-_])?[a-zA-Z]{2}/
18
+ root to: 'home#index'
19
+ ```
20
+
21
+ In your `app/application_controller.rb`
22
+
23
+ * Set the locale from the params
24
+ * Add the locale as default URL option
25
+
26
+ ```ruby
27
+ before_filter :set_locale
28
+
29
+ def default_url_options(options={})
30
+ formats = %w( xml json )
31
+ { locale: formats.include?(params[:format].to_s) ? nil : I18n.locale }
32
+ end
33
+
34
+ private
35
+
36
+ def set_locale
37
+ I18n.locale = params[:locale] || I18n.default_locale
38
+ end
39
+ ```
40
+
41
+ ## For Rails 3.2 and under
42
+
3
43
  RoutingFilterLocaleUnlessAPI is a extension filter to Sven Fuchs’s routing-filter
4
44
 
5
45
  http://github.com/svenfuchs/routing-filter
@@ -4,7 +4,7 @@ module RoutingFilterLocaleUnlessAPI
4
4
  module Filter
5
5
  class LocaleUnlessApi < RoutingFilter::Filter
6
6
  @@api_formats = %w( xml json )
7
- cattr_writer :api_formats
7
+ cattr_writer :api_formats, :exclude
8
8
 
9
9
  # Class Methods
10
10
  class << self
@@ -118,9 +118,22 @@ module RoutingFilterLocaleUnlessAPI
118
118
  #
119
119
  # @return [Boolean]
120
120
  def prepend_locale?(path, locale, format)
121
- locale && !self.class.api_format?(format) && !(root_path?(path) && default_locale?(locale))
121
+ locale && !self.class.api_format?(format) && !(root_path?(path) && default_locale?(locale)) && !excluded?(path)
122
122
  end
123
123
 
124
+ # Returns true if path should be excluded based on :exclude option
125
+ #
126
+ # @param [String|Array] path
127
+ # @return [Boolean]
128
+ def excluded?(path)
129
+ path = path.is_a?(Array) ? path.first : path
130
+ case @@exclude
131
+ when Regexp
132
+ path =~ @@exclude
133
+ when Proc
134
+ @@exclude.call(path)
135
+ end
136
+ end
124
137
  end
125
138
  end
126
139
  end
@@ -1,6 +1,6 @@
1
1
  module RoutingFilterLocaleUnlessAPI
2
2
  # @private
3
3
  module Version
4
- STRING = "0.2.2"
4
+ STRING = "0.2.3"
5
5
  end
6
6
  end
@@ -73,6 +73,13 @@ module RoutingFilterLocaleUnlessAPI::Filter
73
73
  it 'if the format XLS is not considered as api' do
74
74
  generated_routes_with(params.merge(:format => 'xls')).should == '/fr/products/1.xls'
75
75
  end
76
+
77
+ context "when exclude is set" do
78
+ it "if a given path doesn't match exclude regexp" do
79
+ RoutingFilter::LocaleUnlessApi.exclude = %r(/clients)
80
+ generated_routes_with(params.merge(:format => 'xls')).should == '/fr/products/1.xls'
81
+ end
82
+ end
76
83
  end
77
84
 
78
85
  context "does not prepend the segments /:locale to the generated path" do
@@ -138,6 +145,11 @@ module RoutingFilterLocaleUnlessAPI::Filter
138
145
  RoutingFilter::LocaleUnlessApi.api_formats = %w( xml json xls )
139
146
  generated_routes_with(params.merge(:format => 'xls')).should == '/products/1.xls'
140
147
  end
148
+
149
+ it 'if a given path matches exclude regexp' do
150
+ RoutingFilter::LocaleUnlessApi.exclude = %r(/products)
151
+ generated_routes_with(params).should == '/products/1'
152
+ end
141
153
  end
142
154
  end
143
155
  end
metadata CHANGED
@@ -1,137 +1,169 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: routing_filter_locale_unless_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
5
- prerelease:
4
+ version: 0.2.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Sébastien Grosjean
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-06-13 00:00:00.000000000Z
11
+ date: 2014-04-07 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: actionpack
16
- requirement: &70357855929220 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.0.9
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70357855929220
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.9
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: i18n
27
- requirement: &70357855928720 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: 0.5.0
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *70357855928720
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.5.0
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: routing-filter
38
- requirement: &70357855928260 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: 0.2.3
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *70357855928260
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.2.3
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: rake
49
- requirement: &70357855927800 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0.9'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *70357855927800
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '0.9'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rspec
60
- requirement: &70357855927340 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
73
  - - ~>
64
74
  - !ruby/object:Gem::Version
65
75
  version: '2.6'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70357855927340
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '2.6'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: cucumber
71
- requirement: &70357855926880 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
87
  - - ~>
75
88
  - !ruby/object:Gem::Version
76
89
  version: '1.2'
77
90
  type: :development
78
91
  prerelease: false
79
- version_requirements: *70357855926880
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '1.2'
80
97
  - !ruby/object:Gem::Dependency
81
98
  name: guard-rspec
82
- requirement: &70357855926420 !ruby/object:Gem::Requirement
83
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
84
100
  requirements:
85
101
  - - ~>
86
102
  - !ruby/object:Gem::Version
87
103
  version: '1.0'
88
104
  type: :development
89
105
  prerelease: false
90
- version_requirements: *70357855926420
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '1.0'
91
111
  - !ruby/object:Gem::Dependency
92
112
  name: guard-cucumber
93
- requirement: &70357855925960 !ruby/object:Gem::Requirement
94
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
95
114
  requirements:
96
115
  - - ~>
97
116
  - !ruby/object:Gem::Version
98
117
  version: '1.1'
99
118
  type: :development
100
119
  prerelease: false
101
- version_requirements: *70357855925960
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '1.1'
102
125
  - !ruby/object:Gem::Dependency
103
126
  name: growl
104
- requirement: &70357855925500 !ruby/object:Gem::Requirement
105
- none: false
127
+ requirement: !ruby/object:Gem::Requirement
106
128
  requirements:
107
129
  - - ~>
108
130
  - !ruby/object:Gem::Version
109
131
  version: '1.0'
110
132
  type: :development
111
133
  prerelease: false
112
- version_requirements: *70357855925500
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
113
139
  - !ruby/object:Gem::Dependency
114
140
  name: yard
115
- requirement: &70357855925040 !ruby/object:Gem::Requirement
116
- none: false
141
+ requirement: !ruby/object:Gem::Requirement
117
142
  requirements:
118
143
  - - ~>
119
144
  - !ruby/object:Gem::Version
120
145
  version: '0.8'
121
146
  type: :development
122
147
  prerelease: false
123
- version_requirements: *70357855925040
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '0.8'
124
153
  - !ruby/object:Gem::Dependency
125
154
  name: appraisal
126
- requirement: &70357855924580 !ruby/object:Gem::Requirement
127
- none: false
155
+ requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
157
  - - ~>
130
158
  - !ruby/object:Gem::Version
131
159
  version: '0.4'
132
160
  type: :development
133
161
  prerelease: false
134
- version_requirements: *70357855924580
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ~>
165
+ - !ruby/object:Gem::Version
166
+ version: '0.4'
135
167
  description: A routing-filter additional filter that add locale unless XML or JSON,
136
168
  or root_url with default locale
137
169
  email: public@zencocoon.com
@@ -161,28 +193,27 @@ files:
161
193
  - spec/spec_helper.rb
162
194
  homepage: https://github.com/ZenCocoon/routing_filter_locale_unless_api
163
195
  licenses: []
196
+ metadata: {}
164
197
  post_install_message:
165
198
  rdoc_options:
166
199
  - --charset=UTF-8
167
200
  require_paths:
168
201
  - lib
169
202
  required_ruby_version: !ruby/object:Gem::Requirement
170
- none: false
171
203
  requirements:
172
- - - ! '>='
204
+ - - '>='
173
205
  - !ruby/object:Gem::Version
174
206
  version: '0'
175
207
  required_rubygems_version: !ruby/object:Gem::Requirement
176
- none: false
177
208
  requirements:
178
- - - ! '>='
209
+ - - '>='
179
210
  - !ruby/object:Gem::Version
180
211
  version: '0'
181
212
  requirements: []
182
213
  rubyforge_project:
183
- rubygems_version: 1.8.17
214
+ rubygems_version: 2.0.14
184
215
  signing_key:
185
- specification_version: 3
216
+ specification_version: 4
186
217
  summary: routing filter that add locale unless XML or JSON, or root_url with default
187
218
  locale
188
219
  test_files: