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
data/.gitignore
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2010 ProPublica
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# TableFu
|
2
|
+
|
3
|
+
TableFu turns a matric array(from a csv file for example) into a spreadsheet.
|
4
|
+
|
5
|
+
Allows formatting, macros, sorting, and faceting.
|
6
|
+
|
7
|
+
Documentation:
|
8
|
+
http://propublica.github.com/table-fu
|
9
|
+
|
10
|
+
Installation:
|
11
|
+
gem install table-fu
|
12
|
+
|
13
|
+
|
14
|
+
## Usage
|
15
|
+
|
16
|
+
csv =<<-CSV
|
17
|
+
Project,Cost,Date,URL
|
18
|
+
Build Supercollider,500_000_000.50,09/15/2009,http://project.com
|
19
|
+
Harness Power of Fusion,25_000_000,09/16/2009,http://project2.com
|
20
|
+
Motorized Bar Stool,45.00,09/17/2009,http://project3.com
|
21
|
+
CSV
|
22
|
+
|
23
|
+
@spreadsheet = TableFu.new(csv) do |s|
|
24
|
+
s.formatting = {'Cost' => 'currency',
|
25
|
+
'Link' => {'method'=> 'link', 'arguments' => ['Project', 'URL']}}
|
26
|
+
s.sorted_by = {'Project' => {'order' => 'descending'}}
|
27
|
+
s.columns = ['Date', 'Project', 'Cost', 'Link']
|
28
|
+
end
|
29
|
+
|
30
|
+
@spreadsheet.rows[0].column_for('Cost').to_s #=> '$45.00'
|
31
|
+
|
32
|
+
@spreadsheet.rows[0].columns[1].to_s #=> 'Motorized Bar Stool'
|
33
|
+
|
34
|
+
@spreadsheet.rows[0].column_for('Link').to_s
|
35
|
+
#=> "<a href='http://project.com' title='Build Supercollider'>Build Supercollider</a>"
|
36
|
+
|
37
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "table_fu"
|
8
|
+
gem.summary = %Q{TableFu makes arrays act like spreadsheets}
|
9
|
+
gem.description = %Q{A library for manipulating tables as arrays}
|
10
|
+
gem.email = "jeff.larson@gmail.com"
|
11
|
+
gem.homepage = "http://github.com/propublica/table_fu"
|
12
|
+
gem.authors = ["Mark Percival", "Jeff Larson"]
|
13
|
+
gem.add_dependency 'fastercsv'
|
14
|
+
gem.add_development_dependency "spec"
|
15
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
|
+
end
|
17
|
+
Jeweler::GemcutterTasks.new
|
18
|
+
rescue LoadError
|
19
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
20
|
+
end
|
21
|
+
|
22
|
+
require 'spec/rake/spectask'
|
23
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
24
|
+
spec.libs << 'lib' << 'spec'
|
25
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
26
|
+
end
|
27
|
+
|
28
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
29
|
+
spec.libs << 'lib' << 'spec'
|
30
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
31
|
+
spec.rcov = true
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
task :default => :spec
|
36
|
+
|
37
|
+
require 'rake/rdoctask'
|
38
|
+
Rake::RDocTask.new do |rdoc|
|
39
|
+
if File.exist?('VERSION.yml')
|
40
|
+
config = YAML.load(File.read('VERSION.yml'))
|
41
|
+
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
42
|
+
else
|
43
|
+
version = ""
|
44
|
+
end
|
45
|
+
|
46
|
+
rdoc.rdoc_dir = 'rdoc'
|
47
|
+
rdoc.title = "TableFu #{version}"
|
48
|
+
rdoc.rdoc_files.include('README*')
|
49
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
50
|
+
end
|
51
|
+
|
52
|
+
desc "render documentation for gh-pages"
|
53
|
+
task :gh do
|
54
|
+
require 'erb'
|
55
|
+
File.open("index.html", "w") do |f|
|
56
|
+
f.write ERB.new(File.open("documentation/index.html.erb").read).result
|
57
|
+
end
|
58
|
+
end
|