datagrid 0.6.2 → 0.6.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.
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: