datagrid 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -10,7 +10,7 @@ group :development do
10
10
  gem "bundler", "~> 1.1.0"
11
11
  gem "jeweler", "~> 1.6.0"
12
12
 
13
- gem "debugger"
13
+ gem "debugger", :platform => "ruby_19"
14
14
 
15
15
  gem "rspec"
16
16
  gem "accept_values_for"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.2
1
+ 0.6.3
@@ -1,5 +1,5 @@
1
1
  <tr>
2
- <% grid.columns.each do |column| %>
2
+ <% grid.columns(*options[:columns]).each do |column| %>
3
3
  <th class="<%= datagrid_column_classes(grid, column) %>">
4
4
  <%= column.header %>
5
5
  <%= datagrid_order_for(grid, column) if column.order && options[:order]%>
@@ -1,5 +1,5 @@
1
1
  <tr class="<%= options[:cycle] && cycle(*options[:cycle]) %>">
2
- <% grid.columns.each do |column| %>
2
+ <% grid.columns(*options[:columns]).each do |column| %>
3
3
  <td class="<%= datagrid_column_classes(grid, column) %>"><%= datagrid_format_value(grid, column, asset) %></td>
4
4
  <% end %>
5
5
  </tr>
@@ -9,6 +9,10 @@ Local variables:
9
9
  <%= datagrid_header(grid, options) %>
10
10
  </thead>
11
11
  <tbody>
12
+ <% if grid.rows.empty? %>
13
+ <tr><td class="noresults" colspan="100%"><%= I18n.t 'datagrid.no_results', :default => '&mdash;&mdash;'.html_safe %></td></tr>
14
+ <% else %>
12
15
  <%= datagrid_rows(grid, assets, options) %>
16
+ <% end %>
13
17
  </tbody>
14
18
  <% end %>
data/datagrid.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "datagrid"
8
- s.version = "0.6.2"
8
+ s.version = "0.6.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Bogdan Gusiev"]
12
- s.date = "2012-06-22"
12
+ s.date = "2012-08-28"
13
13
  s.description = "This allows you to easily build datagrid aka data tables with sortable columns and filters"
14
14
  s.email = "agresso@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -1,4 +1,5 @@
1
1
  require "datagrid/utils"
2
+ require "active_support/core_ext/class/attribute"
2
3
 
3
4
  module Datagrid
4
5
 
@@ -10,6 +11,8 @@ module Datagrid
10
11
  base.class_eval do
11
12
 
12
13
  include Datagrid::Core
14
+ class_attribute :columns_array
15
+ self.columns_array = []
13
16
 
14
17
  end
15
18
  base.send :include, InstanceMethods
@@ -17,9 +20,12 @@ module Datagrid
17
20
 
18
21
  module ClassMethods
19
22
 
20
- def columns(options = {})
21
- (@columns ||= []).reject do |column|
22
- options[:data] && column.html?
23
+ def columns(*args)
24
+ options = args.extract_options!
25
+ args.compact!
26
+ args.map!(&:to_sym)
27
+ columns_array.select do |column|
28
+ (!options[:data] || column.data?) && (args.empty? || args.include?(column.name))
23
29
  end
24
30
  end
25
31
 
@@ -28,8 +34,7 @@ module Datagrid
28
34
  block ||= lambda do |model|
29
35
  model.send(name)
30
36
  end
31
- @columns ||= []
32
- @columns << Datagrid::Columns::Column.new(self, name, options, &block)
37
+ columns_array << Datagrid::Columns::Column.new(self, name, options, &block)
33
38
  end
34
39
 
35
40
  def column_by_name(name)
@@ -37,6 +42,12 @@ module Datagrid
37
42
  col.name.to_sym == name.to_sym
38
43
  end
39
44
  end
45
+
46
+ def inherited(child_class)
47
+ super(child_class)
48
+ child_class.columns_array = self.columns_array.clone
49
+ end
50
+
40
51
  end # ClassMethods
41
52
 
42
53
  module InstanceMethods
@@ -62,16 +73,19 @@ module Datagrid
62
73
  result
63
74
  end
64
75
 
76
+ # Returns Array of Arrays with data for each row in datagrid assets without header.
65
77
  def rows
66
78
  self.assets.map do |asset|
67
79
  self.row_for(asset)
68
80
  end
69
81
  end
70
82
 
83
+ # Returns Array of Arrays with data for each row in datagrid assets with header.
71
84
  def data
72
85
  self.rows.unshift(self.header)
73
86
  end
74
87
 
88
+ # Return Array of Hashes where keys are column names and values are column values for each row in datagrid <tt>#assets</tt>
75
89
  def data_hash
76
90
  self.assets.map do |asset|
77
91
  hash_for(asset)
@@ -95,8 +109,8 @@ module Datagrid
95
109
  end
96
110
  end
97
111
 
98
- def columns(options ={})
99
- self.class.columns(options)
112
+ def columns(*args)
113
+ self.class.columns(*args)
100
114
  end
101
115
 
102
116
  def data_columns
@@ -52,10 +52,12 @@ class Datagrid::Columns::Column
52
52
  self.options[:order_desc]
53
53
  end
54
54
 
55
-
56
55
  def html?
57
56
  !! self.options[:html]
58
57
  end
59
58
 
59
+ def data?
60
+ !html?
61
+ end
60
62
 
61
63
  end
data/lib/datagrid/core.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "datagrid/drivers"
2
+ require "active_support/core_ext/class/attribute"
2
3
 
3
4
  module Datagrid
4
5
  module Core
@@ -6,7 +7,9 @@ module Datagrid
6
7
  def self.included(base)
7
8
  base.extend ClassMethods
8
9
  base.class_eval do
9
-
10
+ class_attribute :scope_value
11
+ class_attribute :datagrid_attributes
12
+ self.datagrid_attributes = []
10
13
  end
11
14
  base.send :include, InstanceMethods
12
15
  end # self.included
@@ -29,16 +32,12 @@ module Datagrid
29
32
  end
30
33
  end
31
34
 
32
- def datagrid_attributes
33
- @datagrid_attributes ||= []
34
- end
35
-
36
35
  def scope(&block)
37
36
  if block
38
- @scope = block
37
+ self.scope_value = block
39
38
  else
40
39
  check_scope_defined!
41
- @scope.call
40
+ scope_value.call
42
41
  end
43
42
  end
44
43
 
@@ -47,8 +46,14 @@ module Datagrid
47
46
  end
48
47
 
49
48
  protected
50
- def check_scope_defined!(message = "Scope not defined")
51
- raise(Datagrid::ConfigurationError, message) unless @scope
49
+ def check_scope_defined!(message = nil)
50
+ message ||= "Scope not defined"
51
+ raise(Datagrid::ConfigurationError, message) unless scope_value
52
+ end
53
+
54
+ def inherited(child_class)
55
+ super(child_class)
56
+ child_class.datagrid_attributes = self.datagrid_attributes.clone
52
57
  end
53
58
 
54
59
  end # ClassMethods
@@ -65,7 +70,7 @@ module Datagrid
65
70
 
66
71
  def attributes
67
72
  result = {}
68
- self.class.datagrid_attributes.each do |name|
73
+ self.datagrid_attributes.each do |name|
69
74
  result[name] = self[name]
70
75
  end
71
76
  result
@@ -96,9 +101,10 @@ module Datagrid
96
101
 
97
102
  def scope(&block)
98
103
  if block_given?
99
- @current_scope = block
104
+ self.scope_value = block
100
105
  else
101
- @current_scope ? @current_scope.call : self.class.scope
106
+ check_scope_defined!
107
+ scope_value.call
102
108
  end
103
109
  end
104
110
 
@@ -106,8 +112,8 @@ module Datagrid
106
112
  self.class.driver
107
113
  end
108
114
 
109
- def check_scope_defined!(message)
110
- self.class.check_scope_defined!(message)
115
+ def check_scope_defined!(message = nil)
116
+ self.class.send :check_scope_defined!, message
111
117
  end
112
118
 
113
119
  end # InstanceMethods
@@ -49,6 +49,9 @@ module Datagrid
49
49
  raise NotImplementedError
50
50
  end
51
51
 
52
+ def has_column?(scope, column_name)
53
+ raise NotImplementedError
54
+ end
52
55
  end
53
56
  end
54
57
  end
@@ -30,7 +30,7 @@ module Datagrid
30
30
  end
31
31
 
32
32
  def default_order(scope, column_name)
33
- scope.column_names.include?(column_name.to_s) ? [scope.table_name, column_name].join(".") : nil
33
+ has_column?(scope, column_name) ? [scope.table_name, column_name].join(".") : nil
34
34
  end
35
35
 
36
36
  def greater_equal(scope, field, value)
@@ -40,6 +40,12 @@ module Datagrid
40
40
  def less_equal(scope, field, value)
41
41
  scope.where(["#{field} <= ?", value])
42
42
  end
43
+
44
+ def has_column?(scope, column_name)
45
+ scope.column_names.include?(column_name.to_s)
46
+ rescue ::ActiveRecord::StatementInvalid
47
+ false
48
+ end
43
49
  end
44
50
  end
45
51
  end
@@ -28,7 +28,7 @@ module Datagrid
28
28
  end
29
29
 
30
30
  def default_order(scope, column_name)
31
- scope.key?(column_name) ? column_name : nil
31
+ has_column?(scope, column_name) ? column_name : nil
32
32
  end
33
33
 
34
34
  def greater_equal(scope, field, value)
@@ -38,6 +38,10 @@ module Datagrid
38
38
  def less_equal(scope, field, value)
39
39
  scope.where(field => {"$lte" => value})
40
40
  end
41
+
42
+ def has_column?(scope, column_name)
43
+ scope.key?(column_name)
44
+ end
41
45
  end
42
46
  end
43
47
  end
@@ -28,7 +28,7 @@ module Datagrid
28
28
  end
29
29
 
30
30
  def default_order(scope, column_name)
31
- to_scope(scope).klass.fields.keys.include?(column_name.to_s) ? column_name : nil
31
+ has_column?(scope, column_name) ? column_name : nil
32
32
  end
33
33
 
34
34
  def greater_equal(scope, field, value)
@@ -38,6 +38,10 @@ module Datagrid
38
38
  def less_equal(scope, field, value)
39
39
  scope.where(field => {"$lte" => value})
40
40
  end
41
+
42
+ def has_column?(scope, column_name)
43
+ to_scope(scope).klass.fields.keys.include?(column_name.to_s)
44
+ end
41
45
  end
42
46
  end
43
47
  end
@@ -1,3 +1,5 @@
1
+ require "active_support/core_ext/class/attribute"
2
+
1
3
  module Datagrid
2
4
  module Filters
3
5
 
@@ -29,6 +31,8 @@ module Datagrid
29
31
 
30
32
  include Datagrid::Core
31
33
  include Datagrid::Filters::CompositeFilters
34
+ class_attribute :filters
35
+ self.filters = []
32
36
 
33
37
  end
34
38
  base.send :include, InstanceMethods
@@ -36,17 +40,12 @@ module Datagrid
36
40
 
37
41
  module ClassMethods
38
42
 
39
- def filters
40
- @filters ||= []
41
- end
42
-
43
43
  def filter_by_name(attribute)
44
44
  self.filters.find do |filter|
45
45
  filter.name.to_sym == attribute.to_sym
46
46
  end
47
47
  end
48
48
 
49
-
50
49
  def filter(attribute, *args, &block)
51
50
  options = args.extract_options!
52
51
  type = args.shift || :default
@@ -68,11 +67,22 @@ module Datagrid
68
67
  protected
69
68
  def default_filter(attribute)
70
69
  check_scope_defined!("Scope should be defined before filters")
71
- lambda do |value, scope, grid|
72
- grid.driver.where(scope, attribute => value)
70
+ if !driver.has_column?(scope, attribute) && driver.to_scope(scope).respond_to?(attribute)
71
+ lambda do |value, scope, grid|
72
+ grid.driver.to_scope(scope).send(attribute, value)
73
+ end
74
+ else
75
+ lambda do |value, scope, grid|
76
+ grid.driver.where(scope, attribute => value)
77
+ end
73
78
  end
74
79
  end
75
80
 
81
+ def inherited(child_class)
82
+ super(child_class)
83
+ child_class.filters = self.filters.clone
84
+ end
85
+
76
86
  end # ClassMethods
77
87
 
78
88
  module InstanceMethods
@@ -2,21 +2,20 @@ class Datagrid::Filters::BooleanEnumFilter < Datagrid::Filters::EnumFilter
2
2
 
3
3
  YES = "YES"
4
4
  NO = "NO"
5
- VALUES = ActiveSupport::OrderedHash.new
6
- VALUES[YES] = YES
7
- VALUES[NO] = NO
8
5
 
9
6
  def initialize(report, attribute, options = {}, &block)
10
- options[:select] = VALUES.keys
7
+ options[:select] = [YES, NO].map do |key, value|
8
+ [I18n.t("datagrid.filters.eboolean.#{key.downcase}", :default => key.humanize), key]
9
+ end
11
10
  super(report, attribute, options, &block)
12
11
  end
13
12
 
14
13
  def apply(grid_object, scope, value)
15
- super(grid_object, scope, to_boolean(value))
14
+ super(grid_object, scope, value)
16
15
  end
17
16
 
18
17
  def to_boolean(value)
19
- VALUES[value]
18
+ #TODO decide what to do with conversion
20
19
  end
21
20
 
22
21
  end
@@ -60,5 +60,20 @@ describe Datagrid::Columns do
60
60
  report.rows.last.first.should be_false
61
61
  end
62
62
 
63
+ it "should inherit columns correctly" do
64
+ parent = Class.new do
65
+ include Datagrid
66
+ scope { Entry }
67
+ column(:name)
68
+ end
69
+
70
+ child = Class.new(parent) do
71
+ column(:group_id)
72
+ end
73
+ parent.column_by_name(:name).should_not be_nil
74
+ parent.column_by_name(:group_id).should be_nil
75
+ child.column_by_name(:name).should_not be_nil
76
+ child.column_by_name(:group_id).should_not be_nil
77
+ end
63
78
 
64
79
  end
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Datagrid::Filters::BooleanEnumFilter do
4
-
4
+
5
5
  end
@@ -33,7 +33,7 @@ describe Datagrid::Filters do
33
33
  report = test_report do
34
34
  scope {Entry}
35
35
  filter(:group_id, :integer) do |value, scope|
36
- scope.where(group_id: value)
36
+ scope.where(:group_id => value)
37
37
  end
38
38
  end
39
39
  lambda {
@@ -55,6 +55,19 @@ describe Datagrid::Filters do
55
55
  TheReport.new(:name => 'hello')
56
56
  end
57
57
 
58
+ it "should support inheritence" do
59
+ parent = Class.new do
60
+ include Datagrid
61
+ scope {Entry}
62
+ filter(:name)
63
+ end
64
+ child = Class.new(parent) do
65
+ filter(:group_id)
66
+ end
67
+ parent.filters.size.should == 1
68
+ child.filters.size.should == 2
69
+ end
70
+
58
71
  describe "allow_blank and allow_nil options" do
59
72
 
60
73
  def check_performed(value, result, options)
@@ -87,4 +100,17 @@ describe Datagrid::Filters do
87
100
  check_performed(nil, true, :allow_nil => true, :allow_blank => false)
88
101
  end
89
102
  end
103
+
104
+ describe "default filter as scope" do
105
+ it "should create default filter if scope respond to filter name method" do
106
+ Entry.create!
107
+ Entry.create!
108
+ grid = test_report(:limit => 1) do
109
+ scope {Entry}
110
+ filter(:limit)
111
+ end
112
+ grid.assets.to_a.size.should == 1
113
+ end
114
+
115
+ end
90
116
  end
@@ -21,7 +21,7 @@ describe Datagrid::FormBuilder do
21
21
 
22
22
  it "should work for every filter type" do
23
23
  Datagrid::Filters::FILTER_TYPES.each do |type, klass|
24
- Datagrid::FormBuilder.instance_methods.should include(klass.form_builder_helper_name)
24
+ Datagrid::FormBuilder.instance_methods.map(&:to_sym).should include(klass.form_builder_helper_name)
25
25
  end
26
26
  end
27
27
 
@@ -103,8 +103,8 @@ describe Datagrid::FormBuilder do
103
103
  end
104
104
  it { should equal_to_dom(
105
105
  '<select class="disabled boolean_enum_filter" id="report_disabled" name="report[disabled]"><option value=""></option>
106
- <option value="YES">YES</option>
107
- <option value="NO">NO</option></select>'
106
+ <option value="YES">Yes</option>
107
+ <option value="NO">No</option></select>'
108
108
  )}
109
109
  end
110
110
  context "with string filter" do
@@ -26,6 +26,22 @@ describe Datagrid::Helper do
26
26
  ) }
27
27
  let(:grid) { SimpleReport.new }
28
28
 
29
+ context "when grid has no records" do
30
+ let(:grid) do
31
+ test_report do
32
+ scope { Entry.where("1 != 1") }
33
+ end
34
+ end
35
+
36
+ it "should show an empty table with dashes" do
37
+ datagrid_table = subject.datagrid_table(grid)
38
+
39
+ datagrid_table.should match_css_pattern(
40
+ "table.datagrid tr td.noresults" => 1
41
+ )
42
+ end
43
+ end
44
+
29
45
  describe ".datagrid_table" do
30
46
  it "should have grid class as html class on table" do
31
47
  subject.datagrid_table(grid).should match_css_pattern(
@@ -71,6 +87,15 @@ describe Datagrid::Helper do
71
87
  subject.datagrid_table(grid, [entry], :order => false).should match_css_pattern("table.datagrid th .order" => 0)
72
88
  end
73
89
 
90
+ it "should support columns option" do
91
+ subject.datagrid_table(grid, [entry], :columns => [:name]).should match_css_pattern(
92
+ "table.datagrid th.name" => 1,
93
+ "table.datagrid td.name" => 1,
94
+ "table.datagrid th.group" => 0,
95
+ "table.datagrid td.group" => 0
96
+ )
97
+ end
98
+
74
99
  describe ".datagrid_rows" do
75
100
 
76
101
  it "should support urls" do
@@ -137,6 +162,20 @@ describe Datagrid::Helper do
137
162
  )
138
163
  end
139
164
 
165
+ it "should support columns option" do
166
+ rp = test_report do
167
+ scope { Entry }
168
+ column(:name)
169
+ column(:category)
170
+ end
171
+ subject.datagrid_rows(rp, [entry], :columns => [:name]).should match_css_pattern(
172
+ "tr td.name" => "Star"
173
+ )
174
+ subject.datagrid_rows(rp, [entry], :columns => [:name]).should match_css_pattern(
175
+ "tr td.category" => 0
176
+ )
177
+ end
178
+
140
179
  end
141
180
 
142
181
  describe ".datagrid_order_for" do
@@ -27,6 +27,7 @@ class IncludeDom
27
27
  def failure_message
28
28
  "Expected dom \n#{@matcher.inspect}\n to include \n#{@expectation.inspect}\n, but it wasn't"
29
29
  end
30
+
30
31
  end
31
32
 
32
33
 
@@ -90,4 +91,7 @@ class CssPattern
90
91
  end
91
92
  end
92
93
 
94
+ def negative_failure_message
95
+ "Expected do not match dom pattern. But it was"
96
+ end
93
97
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datagrid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
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-06-22 00:00:00.000000000 Z
12
+ date: 2012-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &18401700 !ruby/object:Gem::Requirement
16
+ requirement: &19221460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *18401700
24
+ version_requirements: *19221460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &18399960 !ruby/object:Gem::Requirement
27
+ requirement: &19219460 !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: *18399960
35
+ version_requirements: *19219460
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &18397320 !ruby/object:Gem::Requirement
38
+ requirement: &19214100 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.1.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *18397320
46
+ version_requirements: *19214100
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &18408680 !ruby/object:Gem::Requirement
49
+ requirement: &19239940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.6.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *18408680
57
+ version_requirements: *19239940
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: debugger
60
- requirement: &18403120 !ruby/object:Gem::Requirement
60
+ requirement: &19235660 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *18403120
68
+ version_requirements: *19235660
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &18416100 !ruby/object:Gem::Requirement
71
+ requirement: &19248680 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *18416100
79
+ version_requirements: *19248680
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: accept_values_for
82
- requirement: &18414260 !ruby/object:Gem::Requirement
82
+ requirement: &19245240 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *18414260
90
+ version_requirements: *19245240
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: nokogiri
93
- requirement: &18411420 !ruby/object:Gem::Requirement
93
+ requirement: &19268860 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *18411420
101
+ version_requirements: *19268860
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: sqlite3-ruby
104
- requirement: &18426080 !ruby/object:Gem::Requirement
104
+ requirement: &19277160 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *18426080
112
+ version_requirements: *19277160
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: mongoid
115
- requirement: &18424960 !ruby/object:Gem::Requirement
115
+ requirement: &19299280 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - =
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 2.2.2
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *18424960
123
+ version_requirements: *19299280
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: mongo_mapper
126
- requirement: &18423880 !ruby/object:Gem::Requirement
126
+ requirement: &19317860 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 0.11.0
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *18423880
134
+ version_requirements: *19317860
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: bson
137
- requirement: &18421380 !ruby/object:Gem::Requirement
137
+ requirement: &19315320 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - =
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: 1.4.0
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *18421380
145
+ version_requirements: *19315320
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: bson_ext
148
- requirement: &18433540 !ruby/object:Gem::Requirement
148
+ requirement: &19313340 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - =
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: 1.4.0
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *18433540
156
+ version_requirements: *19313340
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: fastercsv
159
- requirement: &18429580 !ruby/object:Gem::Requirement
159
+ requirement: &19334040 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ! '>='
@@ -164,7 +164,7 @@ dependencies:
164
164
  version: '0'
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *18429580
167
+ version_requirements: *19334040
168
168
  description: This allows you to easily build datagrid aka data tables with sortable
169
169
  columns and filters
170
170
  email: agresso@gmail.com
@@ -251,7 +251,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
251
251
  version: '0'
252
252
  segments:
253
253
  - 0
254
- hash: -28109512857849373
254
+ hash: 717556836869026164
255
255
  required_rubygems_version: !ruby/object:Gem::Requirement
256
256
  none: false
257
257
  requirements: