table_fu 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/LICENSE +20 -0
- data/README +37 -0
- data/Rakefile +58 -0
- data/VERSION.yml +5 -0
- data/doc/TableFu/Datum.html +743 -0
- data/doc/TableFu/Formatting.html +469 -0
- data/doc/TableFu/Header.html +198 -0
- data/doc/TableFu/Row.html +508 -0
- data/doc/TableFu.html +1806 -0
- data/doc/_index.html +154 -0
- data/doc/class_list.html +36 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +50 -0
- data/doc/css/style.css +268 -0
- data/doc/file.README.html +89 -0
- data/doc/file_list.html +38 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +89 -0
- data/doc/js/app.js +99 -0
- data/doc/js/full_list.js +106 -0
- data/doc/js/jquery.js +19 -0
- data/doc/method_list.html +363 -0
- data/doc/top-level-namespace.html +85 -0
- data/documentation/css/dawn.css +121 -0
- data/documentation/css/styles.css +63 -0
- data/documentation/images/proplogo.png +0 -0
- data/documentation/index.html.erb +148 -0
- data/examples/columns.rb +7 -0
- data/examples/columns_hidden.rb +5 -0
- data/examples/faceting.rb +2 -0
- data/examples/formatting_options.rb +6 -0
- data/examples/last_name.rb +4 -0
- data/examples/link.rb +11 -0
- data/examples/only.rb +6 -0
- data/examples/rails_helpers.rb +3 -0
- data/examples/sort_by_column.rb +11 -0
- data/examples/sort_by_number.rb +0 -0
- data/examples/totals.rb +2 -0
- data/examples/zap_joyce.rb +3 -0
- data/index.html +210 -0
- data/lib/table_fu/formatting.rb +52 -0
- data/lib/table_fu.rb +386 -0
- data/spec/assets/sample.csv +476 -0
- data/spec/assets/test.csv +8 -0
- data/spec/assets/test_macro.csv +8 -0
- data/spec/rcov.opts +2 -0
- data/spec/readme_example_spec.rb +39 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/table_fu_spec.rb +221 -0
- data/table_fu.gemspec +112 -0
- metadata +141 -0
@@ -0,0 +1,221 @@
|
|
1
|
+
require 'spec'
|
2
|
+
require 'spec/spec_helper'
|
3
|
+
require 'fastercsv'
|
4
|
+
|
5
|
+
|
6
|
+
describe TableFu do
|
7
|
+
|
8
|
+
before :all do
|
9
|
+
csv = FasterCSV.parse(File.open('spec/assets/test.csv'))
|
10
|
+
@spreadsheet = TableFu.new(csv, :style => {'URL' => 'text-align: left;'})
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should give me back a Row object' do
|
14
|
+
@spreadsheet.rows.each do |r|
|
15
|
+
r.class.should eql TableFu::Row
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should give me back a column by it\'s header name' do
|
20
|
+
@spreadsheet.rows[0].column_for("State").to_s.should == "Alabama"
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should sort rows' do
|
24
|
+
@spreadsheet.sorted_by = {'State' => {"order" => 'descending'}}
|
25
|
+
@spreadsheet.rows[0].column_for("State").to_s.should eql "Wyoming"
|
26
|
+
@spreadsheet.sorted_by = {'Party' => {"order" => 'descending'}}
|
27
|
+
@spreadsheet.rows[0].column_for("Party").to_s.should eql "Republican"
|
28
|
+
@spreadsheet.sorted_by = {'Representative' => {"order" => 'ascending', "format" => 'last_name'}}
|
29
|
+
@spreadsheet.rows[2].column_for("Representative").to_s.should eql "Jo Bonner"
|
30
|
+
|
31
|
+
|
32
|
+
@spreadsheet.col_opts[:columns] = {'State', 'Party', 'Total Appropriations', 'URL'}
|
33
|
+
@spreadsheet.rows.each do |row|
|
34
|
+
row.columns.each do |column|
|
35
|
+
if column.column_name == 'URL'
|
36
|
+
column.style.should eql 'text-align: left;'
|
37
|
+
column.to_s.should eql ''
|
38
|
+
column.value.should be_nil
|
39
|
+
end
|
40
|
+
column.style.should_not be_nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should sort rows with numerals' do
|
47
|
+
@spreadsheet.sorted_by = {'Projects' => {"order" => 'ascending'}}
|
48
|
+
sorted = @spreadsheet.rows.map do |row|
|
49
|
+
row.column_for("Projects").value
|
50
|
+
end
|
51
|
+
sorted.should eql [4, 5, 10, 12, 20, 49, nil]
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should be able to contain only the rows I want, after sorting' do
|
55
|
+
@spreadsheet.sorted_by = {'State' => {"order" => 'ascending'}}
|
56
|
+
@spreadsheet.only!(1..2)
|
57
|
+
@spreadsheet.rows[0].column_for('State').to_s.should eql 'Arizona'
|
58
|
+
@spreadsheet.rows[1].column_for('State').to_s.should eql 'California'
|
59
|
+
@spreadsheet.deleted_rows.length.should eql 5
|
60
|
+
@spreadsheet.rows.length.should eql 2
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe TableFu, 'with a complicated setup' do
|
65
|
+
|
66
|
+
before :all do
|
67
|
+
csv = FasterCSV.parse(File.open('spec/assets/test.csv'))
|
68
|
+
@spreadsheet = TableFu.new(csv)
|
69
|
+
@spreadsheet.col_opts[:formatting] = {'Total Appropriation' => :currency,
|
70
|
+
"Representative" => :last_name_first_name}
|
71
|
+
@spreadsheet.col_opts[:style] = {'Leadership' => "text-align: left;", 'URL' => 'text-align: right;'}
|
72
|
+
@spreadsheet.col_opts[:invisible] = ['URL']
|
73
|
+
@spreadsheet.delete_rows! [8]
|
74
|
+
@spreadsheet.sorted_by = {'State' => {"order" => 'descending'}}
|
75
|
+
@spreadsheet.col_opts[:columns] = ['State', 'Leadership', 'Total Appropriation', 'Party', 'URL']
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'Leadership column should be marked invisible' do
|
79
|
+
@spreadsheet.rows[0].column_for('URL').invisible?.should be_true
|
80
|
+
@spreadsheet.rows[0].column_for('State').invisible?.should be_false
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should give me back a Row object' do
|
84
|
+
@spreadsheet.rows.each do |r|
|
85
|
+
r.class.should eql TableFu::Row
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'should give me back a 7 rows because it ignored row 476 and header' do
|
90
|
+
@spreadsheet.rows.size.should eql 7
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'should give me back a column by it\'s header name' do
|
94
|
+
@spreadsheet.rows[3].column_for('State').to_s.should eql "Georgia"
|
95
|
+
@spreadsheet.rows[2].column_for('State').to_s.should eql "New Jersey"
|
96
|
+
@spreadsheet.rows[0].column_for('State').to_s.should eql "Wyoming"
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'should total a column' do
|
100
|
+
@spreadsheet.total_for("Total Appropriation").value.should eql 16640189309
|
101
|
+
@spreadsheet.total_for("Total Appropriation").to_s.should eql "$16,640,189,309"
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should format a column' do
|
105
|
+
@spreadsheet.rows[0].column_for("Total Appropriation").to_s.should eql "$138,526,141"
|
106
|
+
@spreadsheet.rows[0].column_for("Total Appropriation").value.should eql 138526141
|
107
|
+
@spreadsheet.rows[4].column_for("Representative").to_s.should eql "Nunes, Devin"
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should format a header' do
|
111
|
+
@spreadsheet.headers[1].style.should eql 'text-align: left;'
|
112
|
+
@spreadsheet.headers[4].style.should eql 'text-align: right;'
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should not care what kind of keys the hash has' do
|
116
|
+
@spreadsheet = TableFu.new(File.open('spec/assets/test.csv'))
|
117
|
+
@spreadsheet.col_opts["style"] = {'Leadership' => "text-align: left;", 'URL' => 'text-align: right;'}
|
118
|
+
|
119
|
+
@spreadsheet.rows[0].column_for('Leadership').style.should ==
|
120
|
+
@spreadsheet.col_opts["style"]['Leadership']
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
describe TableFu, "with faceting" do
|
129
|
+
|
130
|
+
before :all do
|
131
|
+
csv = FasterCSV.parse(File.open('spec/assets/test.csv'))
|
132
|
+
@spreadsheet = TableFu.new(csv)
|
133
|
+
@spreadsheet.col_opts[:style] = {'Projects' => 'text-align:left;'}
|
134
|
+
@spreadsheet.col_opts[:formatting] = {'Total Appropriation' => :currency}
|
135
|
+
@spreadsheet.delete_rows! [8]
|
136
|
+
@spreadsheet.sorted_by = {'State' => {:order => 'ascending'}}
|
137
|
+
@faceted_spreadsheets = @spreadsheet.faceted_by("Party", :total => ['Projects', 'Total Appropriation'])
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should have 2 facets" do
|
141
|
+
@faceted_spreadsheets.size.should == 2
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should total up the projects and expenses" do
|
145
|
+
@faceted_spreadsheets[1].total_for("Projects").value.should eql 63
|
146
|
+
@faceted_spreadsheets[0].total_for("Projects").value.should eql 32
|
147
|
+
@faceted_spreadsheets[1].total_for("State").value.should eql 3
|
148
|
+
@faceted_spreadsheets[1].total_for("Total Appropriation").value.should eql 175142465
|
149
|
+
end
|
150
|
+
|
151
|
+
it "should keep formatting on totals" do
|
152
|
+
@faceted_spreadsheets[1].total_for("Total Appropriation").to_s.should eql "$175,142,465"
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should remember what facet it belongs to" do
|
156
|
+
@faceted_spreadsheets[1].faceted?.should be_true
|
157
|
+
@faceted_spreadsheets[0].faceted_on.should == 'Democrat'
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should keep the formatting" do
|
161
|
+
|
162
|
+
@faceted_spreadsheets[1].rows[1].column_for('Total Appropriation').to_s.should eql "$25,320,127"
|
163
|
+
@faceted_spreadsheets[1].rows[1].column_for('Projects').style.should eql "text-align:left;"
|
164
|
+
end
|
165
|
+
|
166
|
+
|
167
|
+
end
|
168
|
+
|
169
|
+
describe TableFu, 'with macro columns' do
|
170
|
+
|
171
|
+
class TableFu::Formatting
|
172
|
+
|
173
|
+
class<<self
|
174
|
+
|
175
|
+
def append(first, second)
|
176
|
+
"#{first}#{second}"
|
177
|
+
end
|
178
|
+
|
179
|
+
end
|
180
|
+
|
181
|
+
end
|
182
|
+
|
183
|
+
|
184
|
+
before :all do
|
185
|
+
csv = FasterCSV.parse(File.open('spec/assets/test_macro.csv').read)
|
186
|
+
@spreadsheet = TableFu.new(csv)
|
187
|
+
@spreadsheet.col_opts[:style] = {'Projects' => 'text-align:left;'}
|
188
|
+
@spreadsheet.col_opts[:formatting] = {'Total Appropriation' => :currency,
|
189
|
+
'MacroColumn' => {'method' => 'append', 'arguments' => ['Projects','State']}}
|
190
|
+
@spreadsheet.sorted_by = {'State' => {:order => 'ascending'}}
|
191
|
+
@spreadsheet.col_opts[:columns] = ['State', 'Total Appropriation', 'MacroColumn']
|
192
|
+
end
|
193
|
+
|
194
|
+
|
195
|
+
it "should let us specify a macro for a column" do
|
196
|
+
@spreadsheet.rows[0].column_for('MacroColumn').to_s.should eql '10Alabama'
|
197
|
+
end
|
198
|
+
|
199
|
+
end
|
200
|
+
|
201
|
+
describe TableFu, 'with reordered columns' do
|
202
|
+
|
203
|
+
before :all do
|
204
|
+
csv = FasterCSV.parse(File.open('spec/assets/test.csv'))
|
205
|
+
@spreadsheet = TableFu.new(csv)
|
206
|
+
@spreadsheet.col_opts[:style] = {'Projects' => 'text-align:left;'}
|
207
|
+
@spreadsheet.col_opts[:formatting] = {'Total Appropriation' => :currency}
|
208
|
+
@spreadsheet.col_opts[:sorted_by] = {'State' => {:order => 'ascending'}}
|
209
|
+
end
|
210
|
+
|
211
|
+
|
212
|
+
it "should display columns in the correct order" do
|
213
|
+
@spreadsheet.col_opts[:columns] = ['State', 'Blah', 'Projects']
|
214
|
+
@spreadsheet.column_headers.size.should eql 7
|
215
|
+
@spreadsheet.columns.size.should eql 3
|
216
|
+
facets = @spreadsheet.faceted_by('State')
|
217
|
+
@spreadsheet.rows[0].column_for('Blah').to_s.should eql ''
|
218
|
+
@spreadsheet.rows[0].column_for('Projects').to_s.should eql '10'
|
219
|
+
end
|
220
|
+
|
221
|
+
end
|
data/table_fu.gemspec
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{table_fu}
|
8
|
+
s.version = "0.1.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Mark Percival", "Jeff Larson"]
|
12
|
+
s.date = %q{2010-03-10}
|
13
|
+
s.description = %q{A library for manipulating tables as arrays}
|
14
|
+
s.email = %q{jeff.larson@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".gitignore",
|
21
|
+
"LICENSE",
|
22
|
+
"README",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION.yml",
|
25
|
+
"doc/TableFu.html",
|
26
|
+
"doc/TableFu/Datum.html",
|
27
|
+
"doc/TableFu/Formatting.html",
|
28
|
+
"doc/TableFu/Header.html",
|
29
|
+
"doc/TableFu/Row.html",
|
30
|
+
"doc/_index.html",
|
31
|
+
"doc/class_list.html",
|
32
|
+
"doc/css/common.css",
|
33
|
+
"doc/css/full_list.css",
|
34
|
+
"doc/css/style.css",
|
35
|
+
"doc/file.README.html",
|
36
|
+
"doc/file_list.html",
|
37
|
+
"doc/frames.html",
|
38
|
+
"doc/index.html",
|
39
|
+
"doc/js/app.js",
|
40
|
+
"doc/js/full_list.js",
|
41
|
+
"doc/js/jquery.js",
|
42
|
+
"doc/method_list.html",
|
43
|
+
"doc/top-level-namespace.html",
|
44
|
+
"documentation/css/dawn.css",
|
45
|
+
"documentation/css/styles.css",
|
46
|
+
"documentation/images/proplogo.png",
|
47
|
+
"documentation/index.html.erb",
|
48
|
+
"examples/columns.rb",
|
49
|
+
"examples/columns_hidden.rb",
|
50
|
+
"examples/faceting.rb",
|
51
|
+
"examples/formatting_options.rb",
|
52
|
+
"examples/last_name.rb",
|
53
|
+
"examples/link.rb",
|
54
|
+
"examples/only.rb",
|
55
|
+
"examples/rails_helpers.rb",
|
56
|
+
"examples/sort_by_column.rb",
|
57
|
+
"examples/sort_by_number.rb",
|
58
|
+
"examples/totals.rb",
|
59
|
+
"examples/zap_joyce.rb",
|
60
|
+
"index.html",
|
61
|
+
"lib/table_fu.rb",
|
62
|
+
"lib/table_fu/formatting.rb",
|
63
|
+
"spec/assets/sample.csv",
|
64
|
+
"spec/assets/test.csv",
|
65
|
+
"spec/assets/test_macro.csv",
|
66
|
+
"spec/rcov.opts",
|
67
|
+
"spec/readme_example_spec.rb",
|
68
|
+
"spec/spec.opts",
|
69
|
+
"spec/spec_helper.rb",
|
70
|
+
"spec/table_fu_spec.rb",
|
71
|
+
"table_fu.gemspec"
|
72
|
+
]
|
73
|
+
s.homepage = %q{http://github.com/propublica/table_fu}
|
74
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
75
|
+
s.require_paths = ["lib"]
|
76
|
+
s.rubygems_version = %q{1.3.5}
|
77
|
+
s.summary = %q{TableFu makes arrays act like spreadsheets}
|
78
|
+
s.test_files = [
|
79
|
+
"spec/readme_example_spec.rb",
|
80
|
+
"spec/spec_helper.rb",
|
81
|
+
"spec/table_fu_spec.rb",
|
82
|
+
"examples/columns.rb",
|
83
|
+
"examples/columns_hidden.rb",
|
84
|
+
"examples/faceting.rb",
|
85
|
+
"examples/formatting_options.rb",
|
86
|
+
"examples/last_name.rb",
|
87
|
+
"examples/link.rb",
|
88
|
+
"examples/only.rb",
|
89
|
+
"examples/rails_helpers.rb",
|
90
|
+
"examples/sort_by_column.rb",
|
91
|
+
"examples/sort_by_number.rb",
|
92
|
+
"examples/totals.rb",
|
93
|
+
"examples/zap_joyce.rb"
|
94
|
+
]
|
95
|
+
|
96
|
+
if s.respond_to? :specification_version then
|
97
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
98
|
+
s.specification_version = 3
|
99
|
+
|
100
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
101
|
+
s.add_runtime_dependency(%q<fastercsv>, [">= 0"])
|
102
|
+
s.add_development_dependency(%q<spec>, [">= 0"])
|
103
|
+
else
|
104
|
+
s.add_dependency(%q<fastercsv>, [">= 0"])
|
105
|
+
s.add_dependency(%q<spec>, [">= 0"])
|
106
|
+
end
|
107
|
+
else
|
108
|
+
s.add_dependency(%q<fastercsv>, [">= 0"])
|
109
|
+
s.add_dependency(%q<spec>, [">= 0"])
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
metadata
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: table_fu
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mark Percival
|
8
|
+
- Jeff Larson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2010-03-10 00:00:00 -05:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: fastercsv
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
version:
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: spec
|
28
|
+
type: :development
|
29
|
+
version_requirement:
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0"
|
35
|
+
version:
|
36
|
+
description: A library for manipulating tables as arrays
|
37
|
+
email: jeff.larson@gmail.com
|
38
|
+
executables: []
|
39
|
+
|
40
|
+
extensions: []
|
41
|
+
|
42
|
+
extra_rdoc_files:
|
43
|
+
- LICENSE
|
44
|
+
- README
|
45
|
+
files:
|
46
|
+
- .gitignore
|
47
|
+
- LICENSE
|
48
|
+
- README
|
49
|
+
- Rakefile
|
50
|
+
- VERSION.yml
|
51
|
+
- doc/TableFu.html
|
52
|
+
- doc/TableFu/Datum.html
|
53
|
+
- doc/TableFu/Formatting.html
|
54
|
+
- doc/TableFu/Header.html
|
55
|
+
- doc/TableFu/Row.html
|
56
|
+
- doc/_index.html
|
57
|
+
- doc/class_list.html
|
58
|
+
- doc/css/common.css
|
59
|
+
- doc/css/full_list.css
|
60
|
+
- doc/css/style.css
|
61
|
+
- doc/file.README.html
|
62
|
+
- doc/file_list.html
|
63
|
+
- doc/frames.html
|
64
|
+
- doc/index.html
|
65
|
+
- doc/js/app.js
|
66
|
+
- doc/js/full_list.js
|
67
|
+
- doc/js/jquery.js
|
68
|
+
- doc/method_list.html
|
69
|
+
- doc/top-level-namespace.html
|
70
|
+
- documentation/css/dawn.css
|
71
|
+
- documentation/css/styles.css
|
72
|
+
- documentation/images/proplogo.png
|
73
|
+
- documentation/index.html.erb
|
74
|
+
- examples/columns.rb
|
75
|
+
- examples/columns_hidden.rb
|
76
|
+
- examples/faceting.rb
|
77
|
+
- examples/formatting_options.rb
|
78
|
+
- examples/last_name.rb
|
79
|
+
- examples/link.rb
|
80
|
+
- examples/only.rb
|
81
|
+
- examples/rails_helpers.rb
|
82
|
+
- examples/sort_by_column.rb
|
83
|
+
- examples/sort_by_number.rb
|
84
|
+
- examples/totals.rb
|
85
|
+
- examples/zap_joyce.rb
|
86
|
+
- index.html
|
87
|
+
- lib/table_fu.rb
|
88
|
+
- lib/table_fu/formatting.rb
|
89
|
+
- spec/assets/sample.csv
|
90
|
+
- spec/assets/test.csv
|
91
|
+
- spec/assets/test_macro.csv
|
92
|
+
- spec/rcov.opts
|
93
|
+
- spec/readme_example_spec.rb
|
94
|
+
- spec/spec.opts
|
95
|
+
- spec/spec_helper.rb
|
96
|
+
- spec/table_fu_spec.rb
|
97
|
+
- table_fu.gemspec
|
98
|
+
has_rdoc: true
|
99
|
+
homepage: http://github.com/propublica/table_fu
|
100
|
+
licenses: []
|
101
|
+
|
102
|
+
post_install_message:
|
103
|
+
rdoc_options:
|
104
|
+
- --charset=UTF-8
|
105
|
+
require_paths:
|
106
|
+
- lib
|
107
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: "0"
|
112
|
+
version:
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: "0"
|
118
|
+
version:
|
119
|
+
requirements: []
|
120
|
+
|
121
|
+
rubyforge_project:
|
122
|
+
rubygems_version: 1.3.5
|
123
|
+
signing_key:
|
124
|
+
specification_version: 3
|
125
|
+
summary: TableFu makes arrays act like spreadsheets
|
126
|
+
test_files:
|
127
|
+
- spec/readme_example_spec.rb
|
128
|
+
- spec/spec_helper.rb
|
129
|
+
- spec/table_fu_spec.rb
|
130
|
+
- examples/columns.rb
|
131
|
+
- examples/columns_hidden.rb
|
132
|
+
- examples/faceting.rb
|
133
|
+
- examples/formatting_options.rb
|
134
|
+
- examples/last_name.rb
|
135
|
+
- examples/link.rb
|
136
|
+
- examples/only.rb
|
137
|
+
- examples/rails_helpers.rb
|
138
|
+
- examples/sort_by_column.rb
|
139
|
+
- examples/sort_by_number.rb
|
140
|
+
- examples/totals.rb
|
141
|
+
- examples/zap_joyce.rb
|