routing-filter 0.3.0 → 0.3.1

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/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
- ## 0.3.0 (Not yet released)
1
+ ## 0.3.1
2
+ * Filters support exclude option.
3
+
4
+ ## 0.3.0
2
5
 
3
6
  * Make `routing-filter` compatible with the new journey router in rails 3.2.
data/README.markdown CHANGED
@@ -57,6 +57,7 @@ Filters can also accept options:
57
57
 
58
58
  Rails.application.routes.draw do
59
59
  filter :extension, :exclude => %r(^admin/)
60
+ filter :locale, :exclude => /^\/admin/
60
61
  end
61
62
 
62
63
  ## Running the tests
@@ -43,6 +43,14 @@ module RoutingFilter
43
43
  end
44
44
  end
45
45
 
46
+
47
+ attr_reader :exclude
48
+ def initialize(*args)
49
+ super
50
+ @exclude = options[:exclude]
51
+ end
52
+
53
+
46
54
  def around_recognize(path, env, &block)
47
55
  locale = extract_segment!(self.class.locales_pattern, path) # remove the locale from the beginning of the path
48
56
  yield.tap do |params| # invoke the given block (calls more filters and finally routing)
@@ -59,23 +67,32 @@ module RoutingFilter
59
67
 
60
68
  args << params
61
69
 
62
- yield.tap do |result|
63
- prepend_segment!(result, locale) if prepend_locale?(locale)
70
+ yield.tap do |result|
71
+ url = result.is_a?(Array) ? result.first : result
72
+ prepend_segment!(result, locale) if prepend_locale?(locale) && !excluded?(url)
64
73
  end
65
74
  end
66
75
 
67
76
  protected
77
+ def valid_locale?(locale)
78
+ locale && self.class.locales.include?(locale.to_sym)
79
+ end
68
80
 
69
- def valid_locale?(locale)
70
- locale && self.class.locales.include?(locale.to_sym)
71
- end
72
-
73
- def default_locale?(locale)
74
- locale && locale.to_sym == I18n.default_locale.to_sym
75
- end
81
+ def default_locale?(locale)
82
+ locale && locale.to_sym == I18n.default_locale.to_sym
83
+ end
76
84
 
77
- def prepend_locale?(locale)
78
- locale && (self.class.include_default_locale? || !default_locale?(locale))
85
+ def prepend_locale?(locale)
86
+ locale && (self.class.include_default_locale? || !default_locale?(locale))
87
+ end
88
+
89
+ def excluded?(url)
90
+ case exclude
91
+ when Regexp
92
+ url =~ exclude
93
+ when Proc
94
+ exclude.call(url)
79
95
  end
96
+ end
80
97
  end
81
98
  end
@@ -1,3 +1,3 @@
1
1
  module RoutingFilter
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: routing-filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-10 00:00:00.000000000 Z
12
+ date: 2012-04-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: actionpack
16
- requirement: &7231340 !ruby/object:Gem::Requirement
16
+ requirement: &2156259340 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *7231340
24
+ version_requirements: *2156259340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: appraisal
27
- requirement: &7229840 !ruby/object:Gem::Requirement
27
+ requirement: &2156258620 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *7229840
35
+ version_requirements: *2156258620
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: i18n
38
- requirement: &7225980 !ruby/object:Gem::Requirement
38
+ requirement: &2156257900 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *7225980
46
+ version_requirements: *2156257900
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: test_declarative
49
- requirement: &7311620 !ruby/object:Gem::Requirement
49
+ requirement: &2156273620 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *7311620
57
+ version_requirements: *2156273620
58
58
  description: Routing filters wraps around the complex beast that the Rails routing
59
59
  system is, allowing for unseen flexibility and power in Rails URL recognition and
60
60
  generation.
@@ -67,19 +67,19 @@ files:
67
67
  - README.markdown
68
68
  - MIT-LICENSE
69
69
  - lib/routing/filter.rb
70
+ - lib/routing-filter.rb
71
+ - lib/routing_filter/adapters/rails_2.rb
72
+ - lib/routing_filter/adapters/rails_3.rb
73
+ - lib/routing_filter/adapters/routers/journey.rb
74
+ - lib/routing_filter/adapters/routers/rack_mount.rb
70
75
  - lib/routing_filter/chain.rb
76
+ - lib/routing_filter/filter.rb
77
+ - lib/routing_filter/filters/extension.rb
71
78
  - lib/routing_filter/filters/locale.rb
72
- - lib/routing_filter/filters/uuid.rb
73
79
  - lib/routing_filter/filters/pagination.rb
74
- - lib/routing_filter/filters/extension.rb
80
+ - lib/routing_filter/filters/uuid.rb
75
81
  - lib/routing_filter/version.rb
76
- - lib/routing_filter/filter.rb
77
- - lib/routing_filter/adapters/rails_3.rb
78
- - lib/routing_filter/adapters/routers/journey.rb
79
- - lib/routing_filter/adapters/routers/rack_mount.rb
80
- - lib/routing_filter/adapters/rails_2.rb
81
82
  - lib/routing_filter.rb
82
- - lib/routing-filter.rb
83
83
  homepage: http://github.com/svenfuchs/routing-filter
84
84
  licenses: []
85
85
  post_install_message:
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
100
  version: '0'
101
101
  requirements: []
102
102
  rubyforge_project: ! '[none]'
103
- rubygems_version: 1.8.10
103
+ rubygems_version: 1.8.17
104
104
  signing_key:
105
105
  specification_version: 3
106
106
  summary: Routing filters wraps around the complex beast that the Rails routing system