table_setter 0.2.11 → 0.2.12
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 +15 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/Rakefile +10 -52
- data/documentation/index.html.erb +5 -6
- data/lib/table_setter.rb +2 -3
- data/lib/table_setter/table.rb +0 -1
- data/lib/table_setter/version.rb +3 -0
- data/table_setter.gemspec +26 -161
- data/test/table-setter-app_test.rb +22 -0
- data/{spec/table-setter-command_spec.rb → test/table-setter-command_test.rb} +15 -16
- data/test/table-setter_test.rb +172 -0
- data/{spec/spec_helper.rb → test/test_helper.rb} +2 -7
- metadata +144 -183
- data/VERSION.yml +0 -5
- data/index.html +0 -305
- data/spec/spec.opts +0 -1
- data/spec/table-setter-app_spec.rb +0 -24
- data/spec/table-setter_spec.rb +0 -173
@@ -0,0 +1,172 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/test_helper')
|
2
|
+
|
3
|
+
describe TableSetter::Table do
|
4
|
+
it 'should return the latest yaml modification time' do
|
5
|
+
`touch #{TableSetter::Table.table_path('example')}`
|
6
|
+
assert_equal TableSetter::Table.fresh_yaml_time,
|
7
|
+
File.new(TableSetter::Table.table_path('example')).mtime
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe TableSetter::Table do
|
12
|
+
before do
|
13
|
+
@table = TableSetter::Table.new("example_local")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should load from a google key, and defer loading when asked" do
|
17
|
+
table = TableSetter::Table.new("example", :defer => true)
|
18
|
+
assert_equal table.data, nil
|
19
|
+
table.load
|
20
|
+
assert !table.data.nil?
|
21
|
+
assert !table.data.headers.nil?
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should be able to find out if a given table exists' do
|
25
|
+
assert TableSetter::Table.exists?("non_existent_table") == false
|
26
|
+
assert TableSetter::Table.exists?("example")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a slug" do
|
30
|
+
assert_equal @table.slug, "example_local"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have a deck" do
|
34
|
+
assert !@table.deck.nil?
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have 250 items per page" do
|
38
|
+
assert_equal @table.per_page, 250
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should be sortable" do
|
42
|
+
assert_equal @table.sortable?, false
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should have a footer" do
|
46
|
+
assert !@table.footer.nil?
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should have a title" do
|
50
|
+
assert !@table.title.nil?
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should have 5805 rows" do
|
54
|
+
assert_equal @table.data.rows.length, 5805
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should be stylish" do
|
58
|
+
assert_equal @table.data.rows[1].column_for('State').style, 'text-align:left;'
|
59
|
+
assert_equal @table.data.rows[1].column_for('Project Description').style, 'text-align:right;'
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should have stylish headers" do
|
63
|
+
assert_equal @table.data.headers[0].style, 'text-align:left;'
|
64
|
+
assert_equal @table.data.headers[4].style.length, 0
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should be formatted" do
|
68
|
+
assert_equal @table.data.rows[1].column_for('ARRA Funds Obligated').to_s, '$154,446'
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
describe TableSetter::Table, "with hard pagination" do
|
75
|
+
before do
|
76
|
+
@data = TableSetter::Table.new("example_local")
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should not be sortable" do
|
80
|
+
assert_equal @data.sortable?, false
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should be paginated" do
|
84
|
+
assert_equal @data.hard_paginate?, true
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should paginate based on a page" do
|
88
|
+
@data.paginate! 3
|
89
|
+
assert_equal @data.page, 3
|
90
|
+
assert_equal @data.prev_page, 2
|
91
|
+
assert_equal @data.next_page, 4
|
92
|
+
assert_equal @data.data.rows.length, @data.per_page
|
93
|
+
assert_equal @data.data.rows[0].column_for('State').to_s, 'CALIFORNIA'
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'should not paginate when given a bad value' do
|
97
|
+
assert_raises(ArgumentError) {@data.paginate!(-1)}
|
98
|
+
assert_raises(ArgumentError) {@data.paginate!(10000000)}
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'should handle first page' do
|
102
|
+
@data.paginate! 1
|
103
|
+
assert_equal @data.page, 1
|
104
|
+
assert_equal @data.prev_page, nil
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'should handle last page' do
|
108
|
+
@data.paginate! @data.total_pages
|
109
|
+
assert_equal @data.page, @data.total_pages
|
110
|
+
assert_equal @data.next_page, nil
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
describe TableSetter::Table, "with faceting and macros" do
|
116
|
+
before do
|
117
|
+
@data = TableSetter::Table.new("example_faceted")
|
118
|
+
@tables = @data.facets
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'should load a faceted_table' do
|
122
|
+
data = TableSetter::Table.new("example_faceted", :defer=> true)
|
123
|
+
assert data.facets.nil?
|
124
|
+
data.load
|
125
|
+
tables = data.facets
|
126
|
+
assert_equal tables.length, 56
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should be faceted" do
|
130
|
+
assert @data.faceted?
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should not be sortable" do
|
134
|
+
assert_equal @data.sortable?, false
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
it "should have 3 tables" do
|
139
|
+
assert_equal @tables.length, 56
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should have $212,774,529 for Alabama" do
|
143
|
+
assert_equal @tables[0].total_for('Total Appropriation').to_s, '$212,774,529'
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should have $416,075,044 for North Carolina with dead row" do
|
147
|
+
assert_equal @tables[35].total_for('Total Appropriation').to_s, '$423,318,645'
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
describe TableSetter::Table, "group fetchers" do
|
152
|
+
it "should return live tables" do
|
153
|
+
assert_equal TableSetter::Table.all.length, 1
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
describe TableSetter::Table, "with urls and google bars" do
|
158
|
+
before do
|
159
|
+
@table = TableSetter::Table.new("example_formatted")
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should have a link row" do
|
163
|
+
assert_equal @table.data.rows[1].column_for('Agency Webpage').to_s, "<a href=\"http://www.hhs.gov/recovery/\" title=\"Health and Human Services\">Health and Human Services</a>"
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'should show a bar' do
|
167
|
+
assert_equal @table.data.rows[1].column_for('Spent (%)').to_s, "<div class=\"bar\" style=\"width:42.0%\">42.0%</div>"
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
|
172
|
+
|
@@ -1,11 +1,6 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
-
|
3
|
+
|
4
4
|
require 'table_setter'
|
5
|
-
require 'spec'
|
6
|
-
require 'rack/test'
|
7
|
-
require 'spec/autorun'
|
8
5
|
TableSetter.configure(File.join(File.dirname(__FILE__), "..", "template"))
|
9
|
-
|
10
|
-
|
11
|
-
end
|
6
|
+
require 'minitest/autorun'
|
metadata
CHANGED
@@ -1,183 +1,156 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: table_setter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 11
|
10
|
-
version: 0.2.11
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.12
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Jeff Larson
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
11
|
+
date: 2012-03-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
33
20
|
type: :development
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: rack
|
37
21
|
prerelease: false
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rack
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
49
34
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: thin
|
53
35
|
prerelease: false
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: thin
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
65
48
|
type: :runtime
|
66
|
-
version_requirements: *id003
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: table_fu
|
69
49
|
prerelease: false
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: table_fu
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
81
62
|
type: :runtime
|
82
|
-
version_requirements: *id004
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: sinatra
|
85
63
|
prerelease: false
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sinatra
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
97
76
|
type: :runtime
|
98
|
-
version_requirements: *id005
|
99
|
-
- !ruby/object:Gem::Dependency
|
100
|
-
name: sinatra-static-assets
|
101
77
|
prerelease: false
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sinatra-static-assets
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
113
90
|
type: :runtime
|
114
|
-
version_requirements: *id006
|
115
|
-
- !ruby/object:Gem::Dependency
|
116
|
-
name: emk-sinatra-url-for
|
117
91
|
prerelease: false
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: emk-sinatra-url-for
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
129
104
|
type: :runtime
|
130
|
-
version_requirements: *id007
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: curb
|
133
105
|
prerelease: false
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: curb
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
145
118
|
type: :runtime
|
146
|
-
version_requirements: *id008
|
147
|
-
- !ruby/object:Gem::Dependency
|
148
|
-
name: rdiscount
|
149
119
|
prerelease: false
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rdiscount
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
161
132
|
type: :runtime
|
162
|
-
|
163
|
-
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: A sinatra based app for rendering CSVs hosted on google docs or locally
|
140
|
+
in custom HTML
|
164
141
|
email: thejefflarson@gmail.com
|
165
|
-
executables:
|
166
|
-
- table-setter
|
142
|
+
executables:
|
167
143
|
- table-setter
|
168
144
|
extensions: []
|
169
|
-
|
170
|
-
|
171
|
-
- LICENSE
|
172
|
-
- README
|
173
|
-
- TODO
|
174
|
-
files:
|
145
|
+
extra_rdoc_files: []
|
146
|
+
files:
|
175
147
|
- .document
|
148
|
+
- .gitignore
|
149
|
+
- Gemfile
|
176
150
|
- LICENSE
|
177
151
|
- README
|
178
152
|
- Rakefile
|
179
153
|
- TODO
|
180
|
-
- VERSION.yml
|
181
154
|
- bin/table-setter
|
182
155
|
- doc/TableFu/Formatting.html
|
183
156
|
- doc/TableSetter.html
|
@@ -243,16 +216,11 @@ files:
|
|
243
216
|
- documentation/tables/javascripts/jquery.tablesorter.multipagefilter.js
|
244
217
|
- documentation/tables/javascripts/jquery.tablesorter.pager.js
|
245
218
|
- documentation/tables/stylesheets/stylesheet.css
|
246
|
-
- index.html
|
247
219
|
- lib/table_setter.rb
|
248
220
|
- lib/table_setter/app.rb
|
249
221
|
- lib/table_setter/command.rb
|
250
222
|
- lib/table_setter/table.rb
|
251
|
-
-
|
252
|
-
- spec/spec_helper.rb
|
253
|
-
- spec/table-setter-app_spec.rb
|
254
|
-
- spec/table-setter-command_spec.rb
|
255
|
-
- spec/table-setter_spec.rb
|
223
|
+
- lib/table_setter/version.rb
|
256
224
|
- table_setter.gemspec
|
257
225
|
- template/config.ru
|
258
226
|
- template/lib/formatters.rb
|
@@ -275,39 +243,32 @@ files:
|
|
275
243
|
- template/views/index.erb
|
276
244
|
- template/views/layout.erb
|
277
245
|
- template/views/table.erb
|
278
|
-
|
246
|
+
- test/table-setter-app_test.rb
|
247
|
+
- test/table-setter-command_test.rb
|
248
|
+
- test/table-setter_test.rb
|
249
|
+
- test/test_helper.rb
|
279
250
|
homepage: http://propublica.github.com/table-setter/
|
280
|
-
licenses:
|
281
|
-
|
251
|
+
licenses:
|
252
|
+
- MIT
|
253
|
+
metadata: {}
|
282
254
|
post_install_message:
|
283
255
|
rdoc_options: []
|
284
|
-
|
285
|
-
require_paths:
|
256
|
+
require_paths:
|
286
257
|
- lib
|
287
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
none: false
|
298
|
-
requirements:
|
299
|
-
- - ">="
|
300
|
-
- !ruby/object:Gem::Version
|
301
|
-
hash: 3
|
302
|
-
segments:
|
303
|
-
- 0
|
304
|
-
version: "0"
|
258
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
259
|
+
requirements:
|
260
|
+
- - ! '>='
|
261
|
+
- !ruby/object:Gem::Version
|
262
|
+
version: '0'
|
263
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
264
|
+
requirements:
|
265
|
+
- - ! '>='
|
266
|
+
- !ruby/object:Gem::Version
|
267
|
+
version: '0'
|
305
268
|
requirements: []
|
306
|
-
|
307
|
-
|
308
|
-
rubygems_version: 1.6.2
|
269
|
+
rubyforge_project:
|
270
|
+
rubygems_version: 2.0.0
|
309
271
|
signing_key:
|
310
|
-
specification_version:
|
272
|
+
specification_version: 4
|
311
273
|
summary: A sinatra based app for rendering CSVs in custom HTML
|
312
274
|
test_files: []
|
313
|
-
|