routing_filter_locale_unless_api 0.2.2 → 0.2.3

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.
@@ -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: