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.
- checksums.yaml +7 -0
- data/Changelog.md +3 -0
- data/README.md +40 -0
- data/lib/routing_filter_locale_unless_api/filter/locale_unless_api.rb +15 -2
- data/lib/routing_filter_locale_unless_api/version.rb +1 -1
- data/spec/routing_filter_locale_unless_api/filter/locale_unless_api_spec.rb +12 -0
- metadata +76 -45
checksums.yaml
ADDED
@@ -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
|
data/Changelog.md
CHANGED
@@ -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 [](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
|
@@ -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.
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
214
|
+
rubygems_version: 2.0.14
|
184
215
|
signing_key:
|
185
|
-
specification_version:
|
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:
|