active_filter 0.0.6 → 0.0.7

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dc53bd1d410478d79ed8099e4cd540a94c5f1930
4
+ data.tar.gz: 9cf04de26c134385a2499f52e2fe61fee24afd7c
5
+ SHA512:
6
+ metadata.gz: 487c29b7cbb266e4d9ffc1b52811a02c45b3f0c401aa1e475a3378f03c81b4ae761ae127186c1ca6c8f0a7f9d7d02fb46630fde2802393b3b76e86f139d3b635
7
+ data.tar.gz: 3166120e57c3bd6a0726218e9dfc4c66d3460fb939378908d44568ec886616aaeb03ad353d296c76c9dcd66040f4472e6ad7f596a71a7d6f1d1ba08354e2e903
data/MIT-LICENSE CHANGED
@@ -1,20 +1,20 @@
1
- Copyright 2012 tnakamura
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright 2012 tnakamura
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # ActiveFilter
1
+ # ActiveFilter [![Build Status](https://travis-ci.org/tnakamura/active_filter.png?branch=master)](https://travis-ci.org/tnakamura/active_filter) [![Code Climate](https://codeclimate.com/github/tnakamura/active_filter.png)](https://codeclimate.com/github/tnakamura/active_filter) [![Dependency Status](https://gemnasium.com/tnakamura/active_filter.png)](https://gemnasium.com/tnakamura/active_filter) [![Coverage Status](https://coveralls.io/repos/tnakamura/active_filter/badge.png?branch=master)](https://coveralls.io/r/tnakamura/active_filter)
2
2
 
3
3
  ActiveFilter is a Rails engine for allowing users to filter scope dynamically.
4
4
 
@@ -34,7 +34,10 @@ And then in your controller you could do:
34
34
  ```ruby
35
35
  class BlogsController < ApplicationController
36
36
  def index
37
- @filter = BlogFilter.new(params)
37
+ @filter = BlogFilter.new({
38
+ title: "foo",
39
+ description__exact: "bar",
40
+ })
38
41
  @blogs = @filter.to_scope
39
42
  end
40
43
  end
data/Rakefile CHANGED
@@ -1,27 +1,27 @@
1
- #!/usr/bin/env rake
2
- begin
3
- require 'bundler/setup'
4
- rescue LoadError
5
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
- end
7
- begin
8
- require 'rdoc/task'
9
- rescue LoadError
10
- require 'rdoc/rdoc'
11
- require 'rake/rdoctask'
12
- RDoc::Task = Rake::RDocTask
13
- end
14
-
15
- RDoc::Task.new(:rdoc) do |rdoc|
16
- rdoc.rdoc_dir = 'rdoc'
17
- rdoc.title = 'ActiveFilter'
18
- rdoc.options << '--line-numbers'
19
- rdoc.rdoc_files.include('README.rdoc')
20
- rdoc.rdoc_files.include('lib/**/*.rb')
21
- end
22
-
23
-
24
-
25
-
26
- Bundler::GemHelper.install_tasks
27
-
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'ActiveFilter'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+
24
+
25
+
26
+ Bundler::GemHelper.install_tasks
27
+
data/lib/active_filter.rb CHANGED
@@ -1,7 +1,7 @@
1
- # coding: utf-8
2
- require "active_filter/version"
3
- require "active_filter/base"
4
-
5
- module ActiveFilter
6
- # Your code goes here...
7
- end
1
+ # coding: utf-8
2
+ require "active_filter/version"
3
+ require "active_filter/base"
4
+
5
+ module ActiveFilter
6
+ # Your code goes here...
7
+ end
@@ -12,6 +12,21 @@ require "active_filter/filter/time_filter"
12
12
 
13
13
  module ActiveFilter
14
14
  class Base
15
+ TYPE_FILTER_MAP = {
16
+ primary_key: Filter,
17
+ string: StringFilter,
18
+ text: TextFilter,
19
+ integer: IntegerFilter,
20
+ float: FloatFilter,
21
+ decimal: DecimalFilter,
22
+ datetime: DateTimeFilter,
23
+ timestamp: Filter,
24
+ time: TimeFilter,
25
+ date: DateFilter,
26
+ binary: Filter,
27
+ boolean: BooleanFilter,
28
+ }
29
+
15
30
  include ::Enumerable
16
31
 
17
32
  attr_reader :filters
@@ -19,26 +34,15 @@ module ActiveFilter
19
34
  def initialize(data, scope=nil)
20
35
  @data = data
21
36
  @scope = scope
22
-
23
37
  columns = self.model.columns
24
38
 
25
39
  # fields で指定した列だけをフィルタ可能にする
26
40
  fields = self.class.__send__(:_fields)
27
- unless fields.empty?
28
- columns = columns.select { |column|
29
- fields.include?(column.name) ||
30
- fields.include?(column.name.to_sym)
31
- }
32
- end
41
+ columns = _select_columns(columns, fields) unless fields.empty?
33
42
 
34
43
  # exclude で指定した列を除外する
35
44
  excludes = self.class.__send__(:_exclude)
36
- unless excludes.empty?
37
- columns = columns.reject { |column|
38
- fields.include?(column.name) ||
39
- fields.include?(column.name.to_sym)
40
- }
41
- end
45
+ columns = _reject_columns(columns, excludes) unless excludes.empty?
42
46
 
43
47
  @filters = columns.map { |column|
44
48
  _create_filter_from_column(column)
@@ -138,6 +142,21 @@ module ActiveFilter
138
142
  end
139
143
 
140
144
  private
145
+
146
+ def _select_columns(columns, fields)
147
+ columns.select { |column|
148
+ fields.include?(column.name) ||
149
+ fields.include?(column.name.to_sym)
150
+ }
151
+ end
152
+
153
+ def _reject_columns(columns, fields)
154
+ columns.reject { |column|
155
+ fields.include?(column.name) ||
156
+ fields.include?(column.name.to_sym)
157
+ }
158
+ end
159
+
141
160
  # コンストラクタで受け取ったスコープまたは
142
161
  # model.scoped を返す
143
162
  def _scoped
@@ -166,31 +185,8 @@ module ActiveFilter
166
185
  end
167
186
 
168
187
  def _create_filter_from_column(column)
169
- case column.type
170
- when :primary_key
171
- return Filter.new(column.name)
172
- when :string
173
- return StringFilter.new(column.name)
174
- when :text
175
- return TextFilter.new(column.name)
176
- when :integer
177
- return IntegerFilter.new(column.name)
178
- when :float
179
- return FloatFilter.new(column.name)
180
- when :decimal
181
- return DecimalFilter.new(column.name)
182
- when :datetime
183
- return DateTimeFilter.new(column.name)
184
- when :timestamp
185
- return Filter.new(column.name)
186
- when :time
187
- return TimeFilter.new(column.name)
188
- when :date
189
- return DateFilter.new(column.name)
190
- when :binary
191
- return Filter.new(column.name)
192
- when :boolean
193
- return BooleanFilter.new(column.name)
188
+ if TYPE_FILTER_MAP.include?(column.type)
189
+ TYPE_FILTER_MAP[column.type].new(column.name)
194
190
  else
195
191
  raise ArgumentError.new("#{column.type} is not supported.")
196
192
  end
@@ -31,6 +31,10 @@ module ActiveFilter
31
31
  return scope.where("#{@name} >= ?", value)
32
32
  when "lte"
33
33
  return scope.where("#{@name} <= ?", value)
34
+ when "startswith"
35
+ return scope.where("#{@name} LIKE ?", "#{value}%")
36
+ when "endswith"
37
+ return scope.where("#{@name} LIKE ?", "%#{value}")
34
38
  else
35
39
  raise ArgumentError.new("#{lookup_type} is not supported.")
36
40
  end
@@ -1,21 +1,21 @@
1
- # coding: utf-8
2
- require "active_filter/filter"
3
-
4
- module ActiveFilter
5
- class BooleanFilter < Filter
6
- def convert_value(value)
7
- compare_value = value.is_a?(String) ? value.downcase : value
8
- case compare_value
9
- when "no", "false", false, "0", 0
10
- false
11
- when "yes", "true", true, "1", 1
12
- true
13
- when nil
14
- false
15
- else
16
- !!compare_value
17
- end
18
- end
19
- end
20
- end
21
-
1
+ # coding: utf-8
2
+ require "active_filter/filter"
3
+
4
+ module ActiveFilter
5
+ class BooleanFilter < Filter
6
+ def convert_value(value)
7
+ compare_value = value.is_a?(String) ? value.downcase : value
8
+ case compare_value
9
+ when "no", "false", false, "0", 0
10
+ false
11
+ when "yes", "true", true, "1", 1
12
+ true
13
+ when nil
14
+ false
15
+ else
16
+ !!compare_value
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -1,12 +1,12 @@
1
- # coding: utf-8
2
- require "active_support"
3
- require "active_filter/filter/date_time_filter"
4
-
5
- module ActiveFilter
6
- class DateFilter < DateTimeFilter
7
- def convert_value(value)
8
- value.to_date
9
- end
10
- end
11
- end
12
-
1
+ # coding: utf-8
2
+ require "active_support"
3
+ require "active_filter/filter/date_time_filter"
4
+
5
+ module ActiveFilter
6
+ class DateFilter < DateTimeFilter
7
+ def convert_value(value)
8
+ value.to_date
9
+ end
10
+ end
11
+ end
12
+
@@ -1,16 +1,16 @@
1
- # coding: utf-8
2
- require "active_support"
3
- require "active_filter/filter"
4
-
5
- module ActiveFilter
6
- class DateTimeFilter < Filter
7
- def lookup_type
8
- ["exact", "gt", "lt", "gte", "lte"]
9
- end
10
-
11
- def convert_value(value)
12
- value.to_datetime
13
- end
14
- end
15
- end
16
-
1
+ # coding: utf-8
2
+ require "active_support"
3
+ require "active_filter/filter"
4
+
5
+ module ActiveFilter
6
+ class DateTimeFilter < Filter
7
+ def lookup_type
8
+ ["exact", "gt", "lt", "gte", "lte"]
9
+ end
10
+
11
+ def convert_value(value)
12
+ value.to_datetime
13
+ end
14
+ end
15
+ end
16
+
@@ -1,8 +1,8 @@
1
- # coding: utf-8
2
- require "active_support"
3
- require "active_filter/filter/integer_filter"
4
-
5
- module ActiveFilter
6
- class DecimalFilter < IntegerFilter;end
7
- end
8
-
1
+ # coding: utf-8
2
+ require "active_support"
3
+ require "active_filter/filter/integer_filter"
4
+
5
+ module ActiveFilter
6
+ class DecimalFilter < IntegerFilter;end
7
+ end
8
+
@@ -1,11 +1,11 @@
1
- # coding: utf-8
2
- require "active_filter/filter/integer_filter"
3
-
4
- module ActiveFilter
5
- class FloatFilter < IntegerFilter
6
- def convert_value(value)
7
- value.to_f
8
- end
9
- end
10
- end
11
-
1
+ # coding: utf-8
2
+ require "active_filter/filter/integer_filter"
3
+
4
+ module ActiveFilter
5
+ class FloatFilter < IntegerFilter
6
+ def convert_value(value)
7
+ value.to_f
8
+ end
9
+ end
10
+ end
11
+
@@ -1,15 +1,15 @@
1
- # coding: utf-8
2
- require "active_filter/filter"
3
-
4
- module ActiveFilter
5
- class IntegerFilter < Filter
6
- def lookup_type
7
- ["exact", "gt", "lt", "gte", "lte"]
8
- end
9
-
10
- def convert_value(value)
11
- value.to_i
12
- end
13
- end
14
- end
15
-
1
+ # coding: utf-8
2
+ require "active_filter/filter"
3
+
4
+ module ActiveFilter
5
+ class IntegerFilter < Filter
6
+ def lookup_type
7
+ ["exact", "gt", "lt", "gte", "lte"]
8
+ end
9
+
10
+ def convert_value(value)
11
+ value.to_i
12
+ end
13
+ end
14
+ end
15
+
@@ -1,11 +1,11 @@
1
- # coding: utf-8
2
- require "active_filter/filter"
3
-
4
- module ActiveFilter
5
- class StringFilter < Filter
6
- def lookup_type
7
- ["exact", "contains"]
8
- end
9
- end
10
- end
11
-
1
+ # coding: utf-8
2
+ require "active_filter/filter"
3
+
4
+ module ActiveFilter
5
+ class StringFilter < Filter
6
+ def lookup_type
7
+ ["exact", "contains"]
8
+ end
9
+ end
10
+ end
11
+
@@ -1,7 +1,7 @@
1
- # coding: utf-8
2
- require "active_filter/filter/string_filter"
3
-
4
- module ActiveFilter
5
- class TextFilter < StringFilter;end
6
- end
7
-
1
+ # coding: utf-8
2
+ require "active_filter/filter/string_filter"
3
+
4
+ module ActiveFilter
5
+ class TextFilter < StringFilter;end
6
+ end
7
+
@@ -1,12 +1,12 @@
1
- # coding: utf-8
2
- require "active_support"
3
- require "active_filter/filter/date_time_filter"
4
-
5
- module ActiveFilter
6
- class TimeFilter < DateTimeFilter
7
- def convert_value(value)
8
- value.to_time
9
- end
10
- end
11
- end
12
-
1
+ # coding: utf-8
2
+ require "active_support"
3
+ require "active_filter/filter/date_time_filter"
4
+
5
+ module ActiveFilter
6
+ class TimeFilter < DateTimeFilter
7
+ def convert_value(value)
8
+ value.to_time
9
+ end
10
+ end
11
+ end
12
+
@@ -1,3 +1,3 @@
1
- module ActiveFilter
2
- VERSION = "0.0.6"
3
- end
1
+ module ActiveFilter
2
+ VERSION = "0.0.7"
3
+ end
@@ -1,15 +1,15 @@
1
- # coding: utf-8
2
- module ActiveFilter
3
- module Generators
4
- class FilterGenerator < ::Rails::Generators::NamedBase
5
- source_root File.expand_path("../templates", __FILE__)
6
-
7
- argument :attributes, :type => :array, :default => [], :banner => "field field"
8
-
9
- def create_filter_file
10
- template "filter.rb", "app/filters/#{file_name}_filter.rb"
11
- end
12
- end
13
- end
14
- end
15
-
1
+ # coding: utf-8
2
+ module ActiveFilter
3
+ module Generators
4
+ class FilterGenerator < ::Rails::Generators::NamedBase
5
+ source_root File.expand_path("../templates", __FILE__)
6
+
7
+ argument :attributes, :type => :array, :default => [], :banner => "field field"
8
+
9
+ def create_filter_file
10
+ template "filter.rb", "app/filters/#{file_name}_filter.rb"
11
+ end
12
+ end
13
+ end
14
+ end
15
+
@@ -1,4 +1,4 @@
1
- # desc "Explaining what the task does"
2
- # task :active_filter do
3
- # # Task goes here
4
- # end
1
+ # desc "Explaining what the task does"
2
+ # task :active_filter do
3
+ # # Task goes here
4
+ # end
metadata CHANGED
@@ -1,94 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - tnakamura
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-14 00:00:00.000000000 Z
11
+ date: 2013-08-11 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
28
39
  - !ruby/object:Gem::Version
29
40
  version: '3'
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: rails
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ! '>='
45
+ - - '>='
36
46
  - !ruby/object:Gem::Version
37
47
  version: '3'
38
48
  type: :runtime
39
49
  prerelease: false
40
50
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
51
  requirements:
43
- - - ! '>='
52
+ - - '>='
44
53
  - !ruby/object:Gem::Version
45
54
  version: '3'
46
55
  - !ruby/object:Gem::Dependency
47
56
  name: sqlite3
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
59
+ - - '>='
52
60
  - !ruby/object:Gem::Version
53
61
  version: '0'
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
65
  requirements:
59
- - - ! '>='
66
+ - - '>='
60
67
  - !ruby/object:Gem::Version
61
68
  version: '0'
62
69
  - !ruby/object:Gem::Dependency
63
70
  name: rspec
64
71
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
72
  requirements:
67
- - - ! '>='
73
+ - - '>='
68
74
  - !ruby/object:Gem::Version
69
75
  version: '0'
70
76
  type: :development
71
77
  prerelease: false
72
78
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
79
  requirements:
75
- - - ! '>='
80
+ - - '>='
76
81
  - !ruby/object:Gem::Version
77
82
  version: '0'
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: rspec-rails
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
- - - ! '>='
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: factory_girl_rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: database_cleaner
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
84
116
  - !ruby/object:Gem::Version
85
117
  version: '0'
86
118
  type: :development
87
119
  prerelease: false
88
120
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
121
  requirements:
91
- - - ! '>='
122
+ - - '>='
92
123
  - !ruby/object:Gem::Version
93
124
  version: '0'
94
125
  description: ActiveFilter is a Rails engine for allowing users to filter scope dynamically.
@@ -121,32 +152,25 @@ files:
121
152
  - README.md
122
153
  homepage: https://github.com/tnakamura/active_filter
123
154
  licenses: []
155
+ metadata: {}
124
156
  post_install_message:
125
157
  rdoc_options: []
126
158
  require_paths:
127
159
  - lib
128
160
  required_ruby_version: !ruby/object:Gem::Requirement
129
- none: false
130
161
  requirements:
131
- - - ! '>='
162
+ - - '>='
132
163
  - !ruby/object:Gem::Version
133
164
  version: '0'
134
- segments:
135
- - 0
136
- hash: -272579427
137
165
  required_rubygems_version: !ruby/object:Gem::Requirement
138
- none: false
139
166
  requirements:
140
- - - ! '>='
167
+ - - '>='
141
168
  - !ruby/object:Gem::Version
142
169
  version: '0'
143
- segments:
144
- - 0
145
- hash: -272579427
146
170
  requirements: []
147
171
  rubyforge_project:
148
- rubygems_version: 1.8.24
172
+ rubygems_version: 2.0.0
149
173
  signing_key:
150
- specification_version: 3
174
+ specification_version: 4
151
175
  summary: A rails engine for filtering scope based on user selections.
152
176
  test_files: []