table-for 3.3.0 → 3.4.0
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 +5 -13
- data/.byebug_history +15 -0
- data/CHANGELOG.rdoc +7 -0
- data/Gemfile +1 -1
- data/Rakefile +2 -4
- data/app/views/table_for/_table_for.html.erb +1 -1
- data/lib/table_for/base.rb +30 -16
- data/lib/table_for/version.rb +1 -1
- data/spec/integration/table_for_spec.rb +29 -440
- data/spec/spec_helper.rb +10 -2
- data/spec/table_for/base_spec.rb +2 -6
- data/spec/table_for/view_additions_spec.rb +2 -2
- data/table-for.gemspec +5 -4
- metadata +42 -30
- data/.rspec +0 -2
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZTY1ZGRlNTVlNjU3M2Q4NGE5ZjgxMDUxNzk5YTFhZjZiMzc5OTFkOQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8719b9d60d0575d808cd0e59db4da06669581cff
|
4
|
+
data.tar.gz: 5365a9d7259191c5b11895eb47320663a89b68c1
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YzJiM2M5N2NiNGM5NmQzOTQwOWViNTJhZGQ2YTgxYzRmY2E0N2YzYTA2YmFi
|
11
|
-
OTg3MzEyYjk0NzI5ODFlYmMxZGZkMDc2NTM3MGVhODEwMWVlYjI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MThiNzAzYzg0Y2U5MGNjZmEwODQyMDcwMWU0MGQ4ZGU3YjFjYjhiOTY2OTQ4
|
14
|
-
ZjU5ZTAyYjU2MWUxZTliYWI0MzFlM2NiZTg1ZDUyMDhlZTFhNGY3Y2ZkMmZk
|
15
|
-
Y2Q4OTZjMmU0OTM5MWQyYjhjYzAxMzE5ZjE5NTRmOTUzMDAwMWQ=
|
6
|
+
metadata.gz: c4a894bbb863ca45c866c1710ea119cdf11abc2cf8355d907ff4f89a63e6ee83ea7495421f43fcf1a7335a9672186d4a098afec49a76ee0e94a0e2742e06d06e
|
7
|
+
data.tar.gz: 0a9e4f2628c39dfe85acd549ea1aee6553437b9fdc633489e377c196b63b50a35312471bff12752789392d542b5321af7503f6089351c0df66ec823e77c61309
|
data/.byebug_history
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
continue
|
2
|
+
html2.gsub(/\s+/, "")
|
3
|
+
html1.gsub(/\s+/, "")
|
4
|
+
html1.gsub(/\s+/, " ").gsub("> ", ">").
|
5
|
+
html2.gsub(/\s+/, " ")
|
6
|
+
html1.gsub(/\s+/, " ")
|
7
|
+
html1
|
8
|
+
Nokogiri::XML(html1)
|
9
|
+
Nokogiri::XML(html1).to_s
|
10
|
+
Nokogiri::HTML(html1).to_s
|
11
|
+
Nokogiri::HTML(html1)
|
12
|
+
require 'nokogiri'
|
13
|
+
Nokogiri::HTML(html1)
|
14
|
+
continue
|
15
|
+
html1
|
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
3.4.0
|
2
|
+
* Links options that are applied to a column will now generate the link even if you override
|
3
|
+
column. In haml, this example pointed out by @noctivityinc, now works:
|
4
|
+
= t.column link_action: :edit do
|
5
|
+
%i.fa.fa-pencil
|
6
|
+
* Fixed generation of link_confirm and link_method to apply to the links data element.
|
7
|
+
|
1
8
|
3.2.1
|
2
9
|
* Added ability to configure sort_mode order, i.e. if sort links generate sort_modes in :asc, :desc order, or have different labels
|
3
10
|
than :asc and :desc
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -3,8 +3,6 @@ require 'bundler/gem_tasks'
|
|
3
3
|
|
4
4
|
# Default directory to look in is `/specs`
|
5
5
|
# Run with `rake spec`
|
6
|
-
RSpec::Core::RakeTask.new(:spec)
|
7
|
-
task.rspec_opts = ['--color', '--format', 'nested']
|
8
|
-
end
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
9
7
|
|
10
|
-
task :default => :spec
|
8
|
+
task :default => :spec
|
data/lib/table_for/base.rb
CHANGED
@@ -4,7 +4,6 @@ require 'blocks'
|
|
4
4
|
module TableFor
|
5
5
|
class Base < WithTemplate::Base
|
6
6
|
alias columns queued_blocks
|
7
|
-
alias column queue
|
8
7
|
|
9
8
|
attr_accessor :current_record
|
10
9
|
alias_method :current_row, :current_record
|
@@ -21,6 +20,31 @@ module TableFor
|
|
21
20
|
define(:footer_content, options, &block)
|
22
21
|
end
|
23
22
|
|
23
|
+
def column(*args, &block)
|
24
|
+
options = args.extract_options!
|
25
|
+
queue(*args, options, &block)
|
26
|
+
if options[:link_url] ||
|
27
|
+
options[:link_action] ||
|
28
|
+
options[:link_method] ||
|
29
|
+
options[:link_confirm] ||
|
30
|
+
options[:link]
|
31
|
+
around(columns.last.name) do |content_block, record, column, options|
|
32
|
+
options = options.merge(column.options)
|
33
|
+
url = if options[:link_url]
|
34
|
+
call_with_params(options[:link_url], record)
|
35
|
+
else
|
36
|
+
[options[:link_action], options[:link_namespace], record].flatten.compact
|
37
|
+
end
|
38
|
+
html_options = {data: {}}
|
39
|
+
html_options[:data][:method] = options[:link_method] if options[:link_method].present?
|
40
|
+
html_options[:data][:confirm] = options[:link_confirm] if options[:link_confirm].present?
|
41
|
+
html_options = html_options.deep_merge(options[:link_html] || {})
|
42
|
+
view.link_to content_block.call, url, html_options
|
43
|
+
end
|
44
|
+
end
|
45
|
+
nil
|
46
|
+
end
|
47
|
+
|
24
48
|
def header_column_html(column, options={})
|
25
49
|
header_column_html = call_each_hash_value_with_params(options[:header_column_html], column)
|
26
50
|
if options[:sortable]
|
@@ -51,26 +75,16 @@ module TableFor
|
|
51
75
|
end
|
52
76
|
|
53
77
|
def cell_content(record, column, options={})
|
54
|
-
if options[:link_url] || options[:link_action] || options[:link_method] || options[:link_confirm] || options[:link]
|
55
|
-
url = options[:link_url] ? call_with_params(options[:link_url], record) : [options[:link_action], options[:link_namespace], record].flatten
|
56
|
-
end
|
57
|
-
|
58
78
|
if options[:formatter]
|
59
79
|
if options[:formatter].is_a?(Proc)
|
60
|
-
|
80
|
+
call_with_params(options[:formatter], record.send(column.name), options)
|
61
81
|
else
|
62
|
-
|
82
|
+
record.send(column.name).try(*options[:formatter])
|
63
83
|
end
|
64
84
|
elsif options[:data] || [:edit, :show, :delete].include?(column.name)
|
65
|
-
|
85
|
+
call_with_params(options[:data], record)
|
66
86
|
else
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
if content.blank? || url.blank? || options[:link] == false
|
71
|
-
content
|
72
|
-
elsif url
|
73
|
-
view.link_to content, url, {:method => options[:link_method], :confirm => options[:link_confirm]}.merge(options[:link_html])
|
87
|
+
record.send(column.name)
|
74
88
|
end
|
75
89
|
end
|
76
90
|
|
@@ -114,4 +128,4 @@ module TableFor
|
|
114
128
|
end
|
115
129
|
end
|
116
130
|
end
|
117
|
-
end
|
131
|
+
end
|
data/lib/table_for/version.rb
CHANGED
@@ -3,6 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe "table_for" do
|
4
4
|
with_model :user do
|
5
5
|
table do |t|
|
6
|
+
t.integer "id"
|
6
7
|
t.string "email"
|
7
8
|
t.string "first_name"
|
8
9
|
t.string "last_name"
|
@@ -17,11 +18,14 @@ describe "table_for" do
|
|
17
18
|
end
|
18
19
|
|
19
20
|
before :each do
|
20
|
-
User.create! :email => "andrew.hunter@livingsocial.com", :first_name => "Andrew", :last_name => "Hunter"
|
21
|
-
User.create! :email => "todd.fisher@livingsocial.com", :first_name => "Todd", :last_name => "Fisher"
|
22
|
-
User.create! :email => "jon.phillips@livingsocial.com", :first_name => "Jon", :last_name => "Phillips"
|
21
|
+
User.create! id: 1, :email => "andrew.hunter@livingsocial.com", :first_name => "Andrew", :last_name => "Hunter"
|
22
|
+
User.create! id: 2, :email => "todd.fisher@livingsocial.com", :first_name => "Todd", :last_name => "Fisher"
|
23
|
+
User.create! id: 3, :email => "jon.phillips@livingsocial.com", :first_name => "Jon", :last_name => "Phillips"
|
23
24
|
@users = User.all
|
24
25
|
@view = ActionView::Base.new("app/views")
|
26
|
+
@view.class.send(:define_method, :user_path) do |user|
|
27
|
+
"/users/#{user.id}"
|
28
|
+
end
|
25
29
|
end
|
26
30
|
|
27
31
|
it "should be able render a table with email and first and last name columns" do
|
@@ -59,8 +63,8 @@ describe "table_for" do
|
|
59
63
|
|
60
64
|
it "should be able to specify html attributes" do
|
61
65
|
buffer = @view.table_for @users, :table_html => {:style => "background-color: orange"}
|
62
|
-
xml = XmlSimple.xml_in(%%<table style="background-color: orange"><thead><tr></tr></thead><tbody><tr></tr><tr></tr><tr></tr></tbody></table
|
63
|
-
XmlSimple.xml_in(buffer,
|
66
|
+
xml = XmlSimple.xml_in(%%<table style="background-color: orange"><thead><tr></tr></thead><tbody><tr></tr><tr></tr><tr></tr></tbody></table>%, keeproot: true)
|
67
|
+
XmlSimple.xml_in(buffer, normalisespace: 2, keeproot: true).should eql xml
|
64
68
|
end
|
65
69
|
end
|
66
70
|
|
@@ -162,12 +166,7 @@ describe "table_for" do
|
|
162
166
|
table.column :last_name
|
163
167
|
end
|
164
168
|
|
165
|
-
|
166
|
-
<table>
|
167
|
-
<thead><tr><th>Repeated Column</th><th>Repeated Column</th></tr></thead>
|
168
|
-
<tbody><tr><td>Andrew</td><td>Hunter</td></tr></tbody>
|
169
|
-
</table>%)
|
170
|
-
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
169
|
+
html_includes?(buffer, "<thead><tr><th>Repeated Column</th><th>Repeated Column</th></tr></thead>")
|
171
170
|
end
|
172
171
|
|
173
172
|
it "should be able to specify html attributes" do
|
@@ -177,7 +176,7 @@ describe "table_for" do
|
|
177
176
|
xml = XmlSimple.xml_in(%%<table><thead><tr><th class="sortable">First Name</th></tr></thead><tbody><tr><td>Andrew</td></tr></tbody></table>%)
|
178
177
|
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
179
178
|
end
|
180
|
-
|
179
|
+
|
181
180
|
it "should be able to dynamically specify column attributes" do
|
182
181
|
buffer = @view.table_for @users[0, 1], :header_column_html => {:class => lambda {@view.cycle("even", "odd")},
|
183
182
|
:id => lambda {|column| "#{column.name.to_s}_header"}} do |table|
|
@@ -201,81 +200,6 @@ describe "table_for" do
|
|
201
200
|
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
202
201
|
end
|
203
202
|
end
|
204
|
-
|
205
|
-
# describe "edit_header block" do
|
206
|
-
# it "should be able to replace the edit_header block" do
|
207
|
-
# @view.expects(:edit_user_path).with(User.first).returns("/users/1/edit")
|
208
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
209
|
-
# table.define :edit_header do
|
210
|
-
# "Edit"
|
211
|
-
# end
|
212
|
-
# table.column :edit
|
213
|
-
# end
|
214
|
-
#
|
215
|
-
# xml = XmlSimple.xml_in(%%
|
216
|
-
# <table>
|
217
|
-
# <thead><tr><th>Edit</th></tr></thead>
|
218
|
-
# <tbody>
|
219
|
-
# <tr>
|
220
|
-
# <td>
|
221
|
-
# <a href="/users/1/edit">Edit</a>
|
222
|
-
# </td>
|
223
|
-
# </tr>
|
224
|
-
# </tbody>
|
225
|
-
# </table>%)
|
226
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
227
|
-
# end
|
228
|
-
# end
|
229
|
-
#
|
230
|
-
# describe "delete_header block" do
|
231
|
-
# it "should be able to replace the delete_header block" do
|
232
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
233
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
234
|
-
# table.define :delete_header do
|
235
|
-
# "Delete"
|
236
|
-
# end
|
237
|
-
# table.column :delete
|
238
|
-
# end
|
239
|
-
#
|
240
|
-
# xml = XmlSimple.xml_in(%%
|
241
|
-
# <table>
|
242
|
-
# <thead><tr><th>Delete</th></tr></thead>
|
243
|
-
# <tbody>
|
244
|
-
# <tr>
|
245
|
-
# <td>
|
246
|
-
# <a href="/users/1" rel="nofollow" data-method="delete" data-confirm="Are you sure you want to delete this User?">Delete</a>
|
247
|
-
# </td>
|
248
|
-
# </tr>
|
249
|
-
# </tbody>
|
250
|
-
# </table>%)
|
251
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
252
|
-
# end
|
253
|
-
# end
|
254
|
-
#
|
255
|
-
# describe "show_header block" do
|
256
|
-
# it "should be able to replace the show_header block" do
|
257
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
258
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
259
|
-
# table.define :show_header do
|
260
|
-
# "Show"
|
261
|
-
# end
|
262
|
-
# table.column :show
|
263
|
-
# end
|
264
|
-
#
|
265
|
-
# xml = XmlSimple.xml_in(%%
|
266
|
-
# <table>
|
267
|
-
# <thead><tr><th>Show</th></tr></thead>
|
268
|
-
# <tbody>
|
269
|
-
# <tr>
|
270
|
-
# <td>
|
271
|
-
# <a href="/users/1">Show</a>
|
272
|
-
# </td>
|
273
|
-
# </tr>
|
274
|
-
# </tbody>
|
275
|
-
# </table>%)
|
276
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
277
|
-
# end
|
278
|
-
# end
|
279
203
|
|
280
204
|
describe "column header contents block" do
|
281
205
|
it "should be able to override the header for a particular column" do
|
@@ -563,7 +487,7 @@ describe "table_for" do
|
|
563
487
|
xml = XmlSimple.xml_in(%%<table><thead><tr><th>First Name</th></tr></thead><tbody><tr><td class="data">Andrew</td></tr></tbody></table>%)
|
564
488
|
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
565
489
|
end
|
566
|
-
|
490
|
+
|
567
491
|
it "should be able to dynamically specify column attributes" do
|
568
492
|
buffer = @view.table_for @users[0, 1], :data_column_html => {:class => lambda {@view.cycle("even", "odd")},
|
569
493
|
:id => lambda {|user, column| "#{column.name.to_s}_data"}} do |table|
|
@@ -607,358 +531,23 @@ describe "table_for" do
|
|
607
531
|
end
|
608
532
|
end
|
609
533
|
|
610
|
-
# describe "edit block" do
|
611
|
-
# it "should be able to replace the edit block" do
|
612
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
613
|
-
# table.define :edit do
|
614
|
-
# "Edit Link"
|
615
|
-
# end
|
616
|
-
# table.column :edit
|
617
|
-
# end
|
618
|
-
#
|
619
|
-
# xml = XmlSimple.xml_in(%%
|
620
|
-
# <table>
|
621
|
-
# <thead><tr><th></th></tr></thead>
|
622
|
-
# <tbody><tr><td>Edit Link</td></tr></tbody>
|
623
|
-
# </table>%)
|
624
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
625
|
-
# end
|
626
|
-
#
|
627
|
-
# it "should be able to create an edit column" do
|
628
|
-
# @view.expects(:edit_user_path).with(User.first).returns("/users/1/edit")
|
629
|
-
#
|
630
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
631
|
-
# table.column :edit
|
632
|
-
# end
|
633
|
-
#
|
634
|
-
# xml = XmlSimple.xml_in(%%
|
635
|
-
# <table>
|
636
|
-
# <thead><tr><th></th></tr></thead>
|
637
|
-
# <tbody><tr><td><a href="/users/1/edit">Edit</a></td></tr></tbody>
|
638
|
-
# </table>%)
|
639
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
640
|
-
# end
|
641
|
-
#
|
642
|
-
# it "should be able to update the label for an edit column" do
|
643
|
-
# @view.expects(:edit_user_path).with(User.first).returns("/users/1/edit")
|
644
|
-
#
|
645
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
646
|
-
# table.column :edit, :data => "Modify"
|
647
|
-
# end
|
648
|
-
#
|
649
|
-
# xml = XmlSimple.xml_in(%%
|
650
|
-
# <table>
|
651
|
-
# <thead><tr><th></th></tr></thead>
|
652
|
-
# <tbody><tr><td><a href="/users/1/edit">Modify</a></td></tr></tbody>
|
653
|
-
# </table>%)
|
654
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
655
|
-
# end
|
656
|
-
#
|
657
|
-
# it "should be able to specify the action for an edit column" do
|
658
|
-
# @view.expects(:modify_user_path).with(User.first).returns("/users/1/modify")
|
659
|
-
#
|
660
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
661
|
-
# table.column :edit, :action => :modify
|
662
|
-
# end
|
663
|
-
#
|
664
|
-
# xml = XmlSimple.xml_in(%%
|
665
|
-
# <table>
|
666
|
-
# <thead><tr><th></th></tr></thead>
|
667
|
-
# <tbody><tr><td><a href="/users/1/modify">Edit</a></td></tr></tbody>
|
668
|
-
# </table>%)
|
669
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
670
|
-
# end
|
671
|
-
#
|
672
|
-
# it "should be able to specify the scope for an edit column" do
|
673
|
-
# @view.expects(:edit_user_test_user_path).with(User.last, User.first).returns("/users/3/test/users/1/edit")
|
674
|
-
#
|
675
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
676
|
-
# table.column :edit, :scope => [User.last, :test]
|
677
|
-
# end
|
678
|
-
#
|
679
|
-
# xml = XmlSimple.xml_in(%%
|
680
|
-
# <table>
|
681
|
-
# <thead><tr><th></th></tr></thead>
|
682
|
-
# <tbody><tr><td><a href="/users/3/test/users/1/edit">Edit</a></td></tr></tbody>
|
683
|
-
# </table>%)
|
684
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
685
|
-
# end
|
686
|
-
#
|
687
|
-
# it "should be able to specify the html for an edit column" do
|
688
|
-
# @view.expects(:edit_user_path).with(User.first).returns("/users/1/edit")
|
689
|
-
#
|
690
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
691
|
-
# table.column :edit, :link_html => {:style => "color:red"}
|
692
|
-
# end
|
693
|
-
#
|
694
|
-
# xml = XmlSimple.xml_in(%%
|
695
|
-
# <table>
|
696
|
-
# <thead><tr><th></th></tr></thead>
|
697
|
-
# <tbody><tr><td><a href="/users/1/edit" style="color:red">Edit</a></td></tr></tbody>
|
698
|
-
# </table>%)
|
699
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
700
|
-
# end
|
701
|
-
# end
|
702
|
-
#
|
703
|
-
# describe "show block" do
|
704
|
-
# it "should be able to replace the show block" do
|
705
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
706
|
-
# table.define :show do
|
707
|
-
# "Show Link"
|
708
|
-
# end
|
709
|
-
# table.column :show
|
710
|
-
# end
|
711
|
-
#
|
712
|
-
# xml = XmlSimple.xml_in(%%
|
713
|
-
# <table>
|
714
|
-
# <thead><tr><th></th></tr></thead>
|
715
|
-
# <tbody><tr><td>Show Link</td></tr></tbody>
|
716
|
-
# </table>%)
|
717
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
718
|
-
# end
|
719
|
-
#
|
720
|
-
# it "should be able to create a show column" do
|
721
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
722
|
-
#
|
723
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
724
|
-
# table.column :show
|
725
|
-
# end
|
726
|
-
#
|
727
|
-
# xml = XmlSimple.xml_in(%%
|
728
|
-
# <table>
|
729
|
-
# <thead><tr><th></th></tr></thead>
|
730
|
-
# <tbody><tr><td><a href="/users/1">Show</a></td></tr></tbody>
|
731
|
-
# </table>%)
|
732
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
733
|
-
# end
|
734
|
-
#
|
735
|
-
# it "should be able to update the label for an show column" do
|
736
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
737
|
-
#
|
738
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
739
|
-
# table.column :show, :data => "Display"
|
740
|
-
# end
|
741
|
-
#
|
742
|
-
# xml = XmlSimple.xml_in(%%
|
743
|
-
# <table>
|
744
|
-
# <thead><tr><th></th></tr></thead>
|
745
|
-
# <tbody><tr><td><a href="/users/1">Display</a></td></tr></tbody>
|
746
|
-
# </table>%)
|
747
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
748
|
-
# end
|
749
|
-
#
|
750
|
-
# it "should be able to specify the action for an show column" do
|
751
|
-
# @view.expects(:display_user_path).with(User.first).returns("/users/1/display")
|
752
|
-
#
|
753
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
754
|
-
# table.column :show, :action => :display
|
755
|
-
# end
|
756
|
-
#
|
757
|
-
# xml = XmlSimple.xml_in(%%
|
758
|
-
# <table>
|
759
|
-
# <thead><tr><th></th></tr></thead>
|
760
|
-
# <tbody><tr><td><a href="/users/1/display">Show</a></td></tr></tbody>
|
761
|
-
# </table>%)
|
762
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
763
|
-
# end
|
764
|
-
#
|
765
|
-
# it "should be able to specify the scope for an show column" do
|
766
|
-
# @view.expects(:user_test_user_path).with(User.last, User.first).returns("/users/3/test/users/1")
|
767
|
-
#
|
768
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
769
|
-
# table.column :show, :scope => [User.last, :test]
|
770
|
-
# end
|
771
|
-
#
|
772
|
-
# xml = XmlSimple.xml_in(%%
|
773
|
-
# <table>
|
774
|
-
# <thead><tr><th></th></tr></thead>
|
775
|
-
# <tbody><tr><td><a href="/users/3/test/users/1">Show</a></td></tr></tbody>
|
776
|
-
# </table>%)
|
777
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
778
|
-
# end
|
779
|
-
#
|
780
|
-
# it "should be able to specify the html for an show column" do
|
781
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
782
|
-
#
|
783
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
784
|
-
# table.column :show, :link_html => {:style => "color:red"}
|
785
|
-
# end
|
786
|
-
#
|
787
|
-
# xml = XmlSimple.xml_in(%%
|
788
|
-
# <table>
|
789
|
-
# <thead><tr><th></th></tr></thead>
|
790
|
-
# <tbody><tr><td><a href="/users/1" style="color:red">Show</a></td></tr></tbody>
|
791
|
-
# </table>%)
|
792
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
793
|
-
# end
|
794
|
-
# end
|
795
|
-
#
|
796
|
-
# describe "delete block" do
|
797
|
-
# it "should be able to replace the delete block" do
|
798
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
799
|
-
# table.define :delete do
|
800
|
-
# "Delete Link"
|
801
|
-
# end
|
802
|
-
# table.column :delete
|
803
|
-
# end
|
804
|
-
#
|
805
|
-
# xml = XmlSimple.xml_in(%%
|
806
|
-
# <table>
|
807
|
-
# <thead><tr><th></th></tr></thead>
|
808
|
-
# <tbody><tr><td>Delete Link</td></tr></tbody>
|
809
|
-
# </table>%)
|
810
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
811
|
-
# end
|
812
|
-
#
|
813
|
-
# it "should be able to create a delete column" do
|
814
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
815
|
-
#
|
816
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
817
|
-
# table.column :delete
|
818
|
-
# end
|
819
|
-
#
|
820
|
-
# xml = XmlSimple.xml_in(%%
|
821
|
-
# <table>
|
822
|
-
# <thead><tr><th></th></tr></thead>
|
823
|
-
# <tbody>
|
824
|
-
# <tr>
|
825
|
-
# <td>
|
826
|
-
# <a href="/users/1" rel="nofollow" data-method="delete" data-confirm="Are you sure you want to delete this User?">Delete</a>
|
827
|
-
# </td>
|
828
|
-
# </tr>
|
829
|
-
# </tbody>
|
830
|
-
# </table>%)
|
831
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
832
|
-
# end
|
833
|
-
#
|
834
|
-
# it "should be able to update the label for an delete column" do
|
835
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
836
|
-
#
|
837
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
838
|
-
# table.column :delete, :data => "Destroy"
|
839
|
-
# end
|
840
|
-
#
|
841
|
-
# xml = XmlSimple.xml_in(%%
|
842
|
-
# <table>
|
843
|
-
# <thead><tr><th></th></tr></thead>
|
844
|
-
# <tbody>
|
845
|
-
# <tr>
|
846
|
-
# <td>
|
847
|
-
# <a href="/users/1" rel="nofollow" data-method="delete" data-confirm="Are you sure you want to delete this User?">Destroy</a>
|
848
|
-
# </td>
|
849
|
-
# </tr>
|
850
|
-
# </tbody>
|
851
|
-
# </table>%)
|
852
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
853
|
-
# end
|
854
|
-
#
|
855
|
-
# it "should be able to specify the action for an delete column" do
|
856
|
-
# @view.expects(:dispose_user_path).with(User.first).returns("/users/1/dispose")
|
857
|
-
#
|
858
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
859
|
-
# table.column :delete, :action => :dispose
|
860
|
-
# end
|
861
|
-
#
|
862
|
-
# xml = XmlSimple.xml_in(%%
|
863
|
-
# <table>
|
864
|
-
# <thead><tr><th></th></tr></thead>
|
865
|
-
# <tbody>
|
866
|
-
# <tr>
|
867
|
-
# <td>
|
868
|
-
# <a href="/users/1/dispose" rel="nofollow" data-method="delete" data-confirm="Are you sure you want to delete this User?">Delete</a>
|
869
|
-
# </td>
|
870
|
-
# </tr>
|
871
|
-
# </tbody>
|
872
|
-
# </table>%)
|
873
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
874
|
-
# end
|
875
|
-
#
|
876
|
-
# it "should be able to specify the scope for a delete column" do
|
877
|
-
# @view.expects(:user_test_user_path).with(User.last, User.first).returns("/users/3/test/users/1")
|
878
|
-
#
|
879
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
880
|
-
# table.column :delete, :scope => [User.last, :test]
|
881
|
-
# end
|
882
|
-
#
|
883
|
-
# xml = XmlSimple.xml_in(%%
|
884
|
-
# <table>
|
885
|
-
# <thead><tr><th></th></tr></thead>
|
886
|
-
# <tbody>
|
887
|
-
# <tr>
|
888
|
-
# <td>
|
889
|
-
# <a href="/users/3/test/users/1" rel="nofollow" data-method="delete" data-confirm="Are you sure you want to delete this User?">Delete</a>
|
890
|
-
# </td>
|
891
|
-
# </tr>
|
892
|
-
# </tbody>
|
893
|
-
# </table>%)
|
894
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
895
|
-
# end
|
896
|
-
#
|
897
|
-
# it "should be able to specify the html for a delete column" do
|
898
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
899
|
-
#
|
900
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
901
|
-
# table.column :delete, :link_html => {:style => "color:red"}
|
902
|
-
# end
|
903
|
-
#
|
904
|
-
# xml = XmlSimple.xml_in(%%
|
905
|
-
# <table>
|
906
|
-
# <thead><tr><th></th></tr></thead>
|
907
|
-
# <tbody>
|
908
|
-
# <tr>
|
909
|
-
# <td>
|
910
|
-
# <a href="/users/1" style="color:red" rel="nofollow" data-method="delete" data-confirm="Are you sure you want to delete this User?">Delete</a>
|
911
|
-
# </td>
|
912
|
-
# </tr>
|
913
|
-
# </tbody>
|
914
|
-
# </table>%)
|
915
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
916
|
-
# end
|
917
|
-
#
|
918
|
-
# it "should be able to override the delete confirmation message for a delete link" do
|
919
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
920
|
-
#
|
921
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
922
|
-
# table.column :delete, :confirm => "Are you sure?"
|
923
|
-
# end
|
924
|
-
#
|
925
|
-
# xml = XmlSimple.xml_in(%%
|
926
|
-
# <table>
|
927
|
-
# <thead><tr><th></th></tr></thead>
|
928
|
-
# <tbody>
|
929
|
-
# <tr>
|
930
|
-
# <td>
|
931
|
-
# <a href="/users/1" rel="nofollow" data-method="delete" data-confirm="Are you sure?">Delete</a>
|
932
|
-
# </td>
|
933
|
-
# </tr>
|
934
|
-
# </tbody>
|
935
|
-
# </table>%)
|
936
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
937
|
-
# end
|
938
|
-
#
|
939
|
-
# it "should be able to override the method for a delete link" do
|
940
|
-
# @view.expects(:user_path).with(User.first).returns("/users/1")
|
941
|
-
#
|
942
|
-
# buffer = @view.table_for @users[0,1] do |table|
|
943
|
-
# table.column :delete, :method => :get
|
944
|
-
# end
|
945
|
-
#
|
946
|
-
# xml = XmlSimple.xml_in(%%
|
947
|
-
# <table>
|
948
|
-
# <thead><tr><th></th></tr></thead>
|
949
|
-
# <tbody>
|
950
|
-
# <tr>
|
951
|
-
# <td>
|
952
|
-
# <a href="/users/1" data-method="get" data-confirm="Are you sure you want to delete this User?">Delete</a>
|
953
|
-
# </td>
|
954
|
-
# </tr>
|
955
|
-
# </tbody>
|
956
|
-
# </table>%)
|
957
|
-
# XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
958
|
-
# end
|
959
|
-
# end
|
960
|
-
|
961
534
|
describe "column data contents block" do
|
535
|
+
context "when passing a link param" do
|
536
|
+
it "render a link surrounding a table cell's content when it is true" do
|
537
|
+
buffer = @view.table_for @users do |table|
|
538
|
+
table.column :email, link: true
|
539
|
+
end
|
540
|
+
html_includes?(buffer, "<a href='/users/1'>andrew.hunter@livingsocial.com</a>")
|
541
|
+
end
|
542
|
+
end
|
543
|
+
|
544
|
+
it "should allow a link_url proc to render a link surrounding a table cell's content" do
|
545
|
+
buffer = @view.table_for @users do |table|
|
546
|
+
table.column :email, link_url: lambda {|user| "/admin/users/#{user.id}"}
|
547
|
+
end
|
548
|
+
html_includes?(buffer, "<a href='/admin/users/1'>andrew.hunter@livingsocial.com</a>")
|
549
|
+
end
|
550
|
+
|
962
551
|
it "should be able to replace an individual column data contents block" do
|
963
552
|
buffer = @view.table_for @users[0,1] do |table|
|
964
553
|
table.column :email, :header => "Email Address"
|
@@ -975,4 +564,4 @@ describe "table_for" do
|
|
975
564
|
XmlSimple.xml_in(buffer, 'NormaliseSpace' => 2).should eql xml
|
976
565
|
end
|
977
566
|
end
|
978
|
-
end
|
567
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,7 +9,7 @@ require 'xmlsimple'
|
|
9
9
|
require 'active_record'
|
10
10
|
require 'active_support/all'
|
11
11
|
require 'with_model'
|
12
|
-
require '
|
12
|
+
require 'byebug'
|
13
13
|
|
14
14
|
def print_hash(hash)
|
15
15
|
hash.inject("") { |s, (k, v)| "#{s} #{k}: #{v}." }
|
@@ -19,4 +19,12 @@ RSpec.configure do |config|
|
|
19
19
|
config.extend WithModel
|
20
20
|
config.mock_with :mocha
|
21
21
|
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
22
|
-
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def normalize_html(html)
|
25
|
+
html.gsub(/\s+/, "").gsub(/\"/, "'")
|
26
|
+
end
|
27
|
+
|
28
|
+
def html_includes?(html1, html2)
|
29
|
+
normalize_html(html1).should include normalize_html(html2)
|
30
|
+
end
|
data/spec/table_for/base_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe TableFor::Base do
|
|
4
4
|
before(:each) do
|
5
5
|
@view_class = Class.new
|
6
6
|
@view = @view_class.new
|
7
|
-
@view_class.send(:include, Blocks::ViewAdditions
|
7
|
+
@view_class.send(:include, Blocks::ViewAdditions)
|
8
8
|
@base = TableFor::Base.new(@view)
|
9
9
|
@records = [OpenStruct.new(:id => 1)]
|
10
10
|
@column = stub(:name => :my_column, :anonymous => false)
|
@@ -61,10 +61,6 @@ describe TableFor::Base do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
# describe "#table_html" do
|
65
|
-
#
|
66
|
-
# end
|
67
|
-
|
68
64
|
describe "#header_column_html" do
|
69
65
|
it "should return an empty hash if header_column_html is not passed in" do
|
70
66
|
header_column_html = @base.header_column_html(@column)
|
@@ -148,4 +144,4 @@ describe TableFor::Base do
|
|
148
144
|
@base.header_sort_link(@column, :sortable => true) { @column.name.to_s.titleize }.should eql "my link"
|
149
145
|
end
|
150
146
|
end
|
151
|
-
end
|
147
|
+
end
|
@@ -6,7 +6,7 @@ describe TableFor::ViewAdditions do
|
|
6
6
|
@view = @view_class.new
|
7
7
|
@view_class.send(:include, ActionView::Helpers::TextHelper)
|
8
8
|
@view_class.send(:include, TableFor::ViewAdditions::ClassMethods)
|
9
|
-
@view_class.send(:include, Blocks::ViewAdditions
|
9
|
+
@view_class.send(:include, Blocks::ViewAdditions)
|
10
10
|
@records = [OpenStruct.new(:id => 1)]
|
11
11
|
@column = stub(:name => :my_column)
|
12
12
|
end
|
@@ -42,4 +42,4 @@ describe TableFor::ViewAdditions do
|
|
42
42
|
@view.table_for(@records, :option1 => 1, :option2 => "2")
|
43
43
|
end
|
44
44
|
end
|
45
|
-
end
|
45
|
+
end
|
data/table-for.gemspec
CHANGED
@@ -19,13 +19,14 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "rails", ">= 3.0.0"
|
22
|
-
spec.add_dependency "with_template", "~> 0.0
|
22
|
+
spec.add_dependency "with_template", "~> 0.1.0"
|
23
23
|
|
24
24
|
spec.add_development_dependency "rspec-rails", ">= 2.0.0.beta.20"
|
25
25
|
spec.add_development_dependency "mocha", "0.10.3"
|
26
26
|
spec.add_development_dependency "xml-simple", "1.1.1"
|
27
|
-
spec.add_development_dependency "supermodel"
|
27
|
+
spec.add_development_dependency "supermodel"
|
28
28
|
spec.add_development_dependency "sqlite3"
|
29
|
-
spec.add_development_dependency "with_model"
|
30
|
-
spec.add_development_dependency "
|
29
|
+
spec.add_development_dependency "with_model"
|
30
|
+
spec.add_development_dependency "byebug"
|
31
|
+
spec.add_development_dependency "nokogiri"
|
31
32
|
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: table-for
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Hunter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: with_template
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0
|
33
|
+
version: 0.1.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.0
|
40
|
+
version: 0.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.0.0.beta.20
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.0.0.beta.20
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -84,56 +84,70 @@ dependencies:
|
|
84
84
|
name: supermodel
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: sqlite3
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: with_model
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: byebug
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
140
|
+
name: nokogiri
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
|
-
- -
|
143
|
+
- - ">="
|
130
144
|
- !ruby/object:Gem::Version
|
131
145
|
version: '0'
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
|
-
- -
|
150
|
+
- - ">="
|
137
151
|
- !ruby/object:Gem::Version
|
138
152
|
version: '0'
|
139
153
|
description: table-for is a table builder for an array of objects, easily allowing
|
@@ -144,10 +158,8 @@ executables: []
|
|
144
158
|
extensions: []
|
145
159
|
extra_rdoc_files: []
|
146
160
|
files:
|
147
|
-
- .
|
148
|
-
- .
|
149
|
-
- .ruby-gemset
|
150
|
-
- .ruby-version
|
161
|
+
- ".byebug_history"
|
162
|
+
- ".gitignore"
|
151
163
|
- CHANGELOG.rdoc
|
152
164
|
- Gemfile
|
153
165
|
- Gemfile.lock
|
@@ -178,17 +190,17 @@ require_paths:
|
|
178
190
|
- lib
|
179
191
|
required_ruby_version: !ruby/object:Gem::Requirement
|
180
192
|
requirements:
|
181
|
-
- -
|
193
|
+
- - ">="
|
182
194
|
- !ruby/object:Gem::Version
|
183
195
|
version: '0'
|
184
196
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
197
|
requirements:
|
186
|
-
- -
|
198
|
+
- - ">="
|
187
199
|
- !ruby/object:Gem::Version
|
188
200
|
version: '0'
|
189
201
|
requirements: []
|
190
202
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.
|
203
|
+
rubygems_version: 2.4.8
|
192
204
|
signing_key:
|
193
205
|
specification_version: 4
|
194
206
|
summary: table-for is a table builder for an array of objects, easily allowing overriding
|
data/.rspec
DELETED
data/.ruby-gemset
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
table-for
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.9.3
|