tableizer 0.0.3 → 0.0.4
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 +7 -0
- data/.gitignore +1 -0
- data/Gemfile.lock +4 -44
- data/README.md +1 -28
- data/lib/tableizer.rb +4 -1
- data/lib/tableizer/csv_table.rb +23 -0
- data/lib/tableizer/data_table.rb +3 -92
- data/lib/tableizer/table.rb +72 -0
- data/lib/tableizer/text_table.rb +35 -0
- data/lib/tableizer/version.rb +1 -1
- data/tableizer.gemspec +0 -11
- data/test/tableizer/col_info.rb +10 -0
- data/test/tableizer/data_table_test.rb +69 -41
- data/test/tableizer/tableizer.rb +0 -0
- data/test/test_helper.rb +3 -2
- metadata +25 -213
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1796c1ab96e6b2abbaf4c0547e7b79dbc2b8247b
|
4
|
+
data.tar.gz: e954982826dc44a7e386ad6d81db9d41983410c9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7c31177e585bbf4f020585cb9f6ec4567bb75c70df7844fbc45ea2d22053032610bf437addce186c0ee44a208a82dca0c60293788d72000a73c668b553700303
|
7
|
+
data.tar.gz: 8b993d0b826ac76a955deabcdaa988427fbdefc11ada0f9076c87ca2be850ff9a0a587fdb7f6d92413ae86eb63e055a02bf2d970d9363dfa037ab3648fb54a7c
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,30 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tableizer (0.0.
|
4
|
+
tableizer (0.0.4)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
binding_of_caller (0.6.8)
|
10
9
|
coderay (1.0.8)
|
11
|
-
columnize (0.3.6)
|
12
|
-
debugger (1.2.1)
|
13
|
-
columnize (>= 0.3.1)
|
14
|
-
debugger-linecache (~> 1.1.1)
|
15
|
-
debugger-ruby_core_source (~> 1.1.4)
|
16
|
-
debugger-linecache (1.1.2)
|
17
|
-
debugger-ruby_core_source (>= 1.1.1)
|
18
|
-
debugger-ruby_core_source (1.1.4)
|
19
|
-
guard (1.5.4)
|
20
|
-
listen (>= 0.4.2)
|
21
|
-
lumberjack (>= 1.0.2)
|
22
|
-
pry (>= 0.9.10)
|
23
|
-
thor (>= 0.14.6)
|
24
|
-
guard-minitest (0.5.0)
|
25
|
-
guard (>= 0.4)
|
26
|
-
listen (0.5.3)
|
27
|
-
lumberjack (1.0.2)
|
28
10
|
method_source (0.8.1)
|
29
11
|
minitest (4.3.2)
|
30
12
|
minitest_should (0.3.1)
|
@@ -32,43 +14,21 @@ GEM
|
|
32
14
|
coderay (~> 1.0.5)
|
33
15
|
method_source (~> 0.8)
|
34
16
|
slop (~> 3.3.1)
|
35
|
-
pry-doc (0.4.4)
|
36
|
-
pry (>= 0.9.9.6)
|
37
|
-
yard (~> 0.8.1)
|
38
17
|
pry-nav (0.2.2)
|
39
18
|
pry (~> 0.9.10)
|
40
|
-
pry-rails (0.2.1)
|
41
|
-
pry (>= 0.9.10)
|
42
|
-
pry-remote (0.1.6)
|
43
|
-
pry (~> 0.9)
|
44
|
-
slop (~> 3.0)
|
45
|
-
pry-stack_explorer (0.4.6)
|
46
|
-
binding_of_caller (~> 0.6.2)
|
47
19
|
rake (10.0.2)
|
48
|
-
rb-fsevent (0.9.2)
|
49
|
-
ruby-prof (0.11.2)
|
50
|
-
ruby_gntp (0.3.4)
|
51
20
|
slop (3.3.3)
|
52
|
-
thor (0.16.0)
|
53
|
-
yard (0.8.2.1)
|
54
21
|
|
55
22
|
PLATFORMS
|
56
23
|
ruby
|
57
24
|
|
58
25
|
DEPENDENCIES
|
59
26
|
bundler (~> 1.0)
|
60
|
-
debugger
|
61
|
-
guard
|
62
|
-
guard-minitest
|
63
27
|
minitest
|
64
28
|
minitest_should
|
65
|
-
pry-doc
|
66
29
|
pry-nav
|
67
|
-
pry-rails
|
68
|
-
pry-remote
|
69
|
-
pry-stack_explorer
|
70
30
|
rake
|
71
|
-
rb-fsevent
|
72
|
-
ruby-prof
|
73
|
-
ruby_gntp
|
74
31
|
tableizer!
|
32
|
+
|
33
|
+
BUNDLED WITH
|
34
|
+
1.16.0.pre.2
|
data/README.md
CHANGED
@@ -1,29 +1,2 @@
|
|
1
1
|
# Tableizer
|
2
|
-
|
3
|
-
TODO: Write a gem description
|
4
|
-
|
5
|
-
## Installation
|
6
|
-
|
7
|
-
Add this line to your application's Gemfile:
|
8
|
-
|
9
|
-
gem 'tableizer'
|
10
|
-
|
11
|
-
And then execute:
|
12
|
-
|
13
|
-
$ bundle
|
14
|
-
|
15
|
-
Or install it yourself as:
|
16
|
-
|
17
|
-
$ gem install tableizer
|
18
|
-
|
19
|
-
## Usage
|
20
|
-
|
21
|
-
TODO: Write usage instructions here
|
22
|
-
|
23
|
-
## Contributing
|
24
|
-
|
25
|
-
1. Fork it
|
26
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
-
5. Create new Pull Request
|
2
|
+
This gem is only an experimentation. Use it at your own risk!
|
data/lib/tableizer.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
module Tableizer
|
4
|
+
class CsvTable
|
5
|
+
def to_s(cols_info, rows)
|
6
|
+
CSV.generate do |csv|
|
7
|
+
csv << cols_info.map{|col_info| col_info.header}
|
8
|
+
rows.each do |row|
|
9
|
+
csv << row.map { |col| convert(col) }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def convert(data)
|
15
|
+
case data
|
16
|
+
when Time
|
17
|
+
data.strftime("%Y-%m-%d %H:%M:%S")
|
18
|
+
else
|
19
|
+
data
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/tableizer/data_table.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
require 'csv'
|
2
|
-
|
3
1
|
class ColInfo
|
4
2
|
attr_reader :header
|
5
3
|
attr_accessor :width, :col_type
|
4
|
+
|
6
5
|
def initialize(header, col_type = nil, width = 0)
|
7
6
|
@header = header
|
8
7
|
@col_type = col_type
|
@@ -10,96 +9,8 @@ class ColInfo
|
|
10
9
|
end
|
11
10
|
end
|
12
11
|
|
13
|
-
|
14
|
-
class DataTable
|
15
|
-
attr_reader :rows, :cols_info
|
16
|
-
|
17
|
-
def initialize(cols_info, rows)
|
18
|
-
@rows = rows
|
19
|
-
@cols_info = cols_info
|
20
|
-
end
|
21
|
-
|
22
|
-
def to_csv
|
23
|
-
CSV.generate do |csv|
|
24
|
-
csv << cols_info.map{|col_info| col_info.header}
|
25
|
-
rows.each do |row|
|
26
|
-
conv_row = row.map do |a|
|
27
|
-
a.class == Time ? a.strftime("%Y-%m-%d %H:%M:%S") : a
|
28
|
-
end
|
29
|
-
csv << conv_row
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def to_text
|
35
|
-
text = ""
|
36
|
-
text << cols_info.map{|a| "%#{a.width}s" % a.header.strip }.join("|") + "\n"
|
37
|
-
text << rows.map do |row|
|
38
|
-
row.zip(cols_info).map{|(col, col_info)| "%#{col_info.width}s" % col.to_s.strip}.join("|")
|
39
|
-
end.join( "\n" )
|
40
|
-
end
|
41
|
-
|
42
|
-
def to_html
|
43
|
-
text = "<table border=\"1\">\n"
|
44
|
-
text += "<thead>\n"
|
45
|
-
text += "<tr>\n"
|
46
|
-
text << cols_info.map{|a| "<th>#{a.header.strip}</th>" }.join("\n")
|
47
|
-
text += "</tr>\n"
|
48
|
-
text += "</thead>"
|
49
|
-
text += "<tbody>"
|
50
|
-
text << rows.map do |row|
|
51
|
-
"<tr>" + row.map{|col| "<td>#{col}</td>"}.join("\n") + "</tr>"
|
52
|
-
end.join( "\n" )
|
53
|
-
text += "</tbody>"
|
54
|
-
text += "</table>"
|
55
|
-
end
|
56
|
-
|
57
|
-
def to_google_table
|
58
|
-
GoogleVisualization.render( rows, cols_info.map{|col| [col.col_type, col.header]} )
|
59
|
-
end
|
60
|
-
|
61
|
-
# def to_pdf
|
62
|
-
# pdf = Prawn::Document.new(:top_margin => 50, :page_layout => :landscape)
|
63
|
-
|
64
|
-
# data = rows.map do |row|
|
65
|
-
# row.zip(cols_info).map do |(col, col_info)|
|
66
|
-
# col
|
67
|
-
# end
|
68
|
-
# end
|
69
|
-
# data
|
70
|
-
# pdf.table( data, :border_style => :grid,
|
71
|
-
# :headers => cols_info.map{|col_info| col_info.header},
|
72
|
-
# :font_size => 7,
|
73
|
-
# :vertical_padding => 1
|
74
|
-
# )
|
75
|
-
# pdf.render
|
76
|
-
# end
|
77
|
-
end
|
78
|
-
|
79
|
-
|
80
12
|
module Enumerable
|
81
|
-
def table
|
82
|
-
|
83
|
-
cols_info = []
|
84
|
-
gen = nil
|
85
|
-
each do |elem|
|
86
|
-
ret = yield elem
|
87
|
-
rows << ret.map{|col| col[1]}
|
88
|
-
unless cols_info.empty?
|
89
|
-
ret.zip(cols_info).each do |(row, col_info)|
|
90
|
-
# Detect the type of the current column
|
91
|
-
if col_info.col_type == NilClass && row[1].class != NilClass
|
92
|
-
col_info.col_type = row[1].class
|
93
|
-
end
|
94
|
-
# Detect the max width the current column
|
95
|
-
col_info.width = [ col_info.width, row[1].to_s.strip.length ].max
|
96
|
-
end
|
97
|
-
else
|
98
|
-
cols_info = ret.map do |(header, val)|
|
99
|
-
ColInfo.new( header.to_s, val.class, [ header.to_s.strip.length, val.to_s.strip.length ].max )
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
DataTable.new(cols_info,rows)
|
13
|
+
def table(&block)
|
14
|
+
Tableizer::Table.create(self, &block)
|
104
15
|
end
|
105
16
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
module Tableizer
|
4
|
+
class NullObject
|
5
|
+
def method_missing(*args, &block)
|
6
|
+
self
|
7
|
+
end
|
8
|
+
|
9
|
+
def nil?
|
10
|
+
true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Table
|
15
|
+
attr_reader :rows, :cols_info
|
16
|
+
|
17
|
+
def initialize(cols_info, rows)
|
18
|
+
@rows = rows
|
19
|
+
@cols_info = cols_info
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.create(elems)
|
23
|
+
rows = []
|
24
|
+
cols_info = []
|
25
|
+
gen = nil
|
26
|
+
|
27
|
+
elems = [NullObject] if elems.first.nil?
|
28
|
+
elems.each do |elem|
|
29
|
+
yielded = yield elem
|
30
|
+
rows << yielded.map{|col| col[1]}
|
31
|
+
unless cols_info.empty?
|
32
|
+
yielded.zip(cols_info).each do |(row, col_info)|
|
33
|
+
# Detect the type of the current column
|
34
|
+
if col_info.col_type == NilClass && row[1].class != NilClass
|
35
|
+
col_info.col_type = row[1].class
|
36
|
+
end
|
37
|
+
end
|
38
|
+
else
|
39
|
+
cols_info = yielded.map do |(header, val)|
|
40
|
+
ColInfo.new( header.to_s, val.class, [ header.to_s.strip.length, val.to_s.strip.length ].max )
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
self.new(cols_info,rows)
|
45
|
+
end
|
46
|
+
|
47
|
+
def to(table_type)
|
48
|
+
mapper = {:csv => CsvTable,
|
49
|
+
:text => TextTable}
|
50
|
+
mapper.fetch(table_type).new.to_s(cols_info, rows)
|
51
|
+
end
|
52
|
+
|
53
|
+
def to_html
|
54
|
+
text = "<table border=\"1\">\n"
|
55
|
+
text += "<thead>\n"
|
56
|
+
text += "<tr>\n"
|
57
|
+
text << cols_info.map{|a| "<th>#{a.header.strip}</th>" }.join("\n")
|
58
|
+
text += "</tr>\n"
|
59
|
+
text += "</thead>"
|
60
|
+
text += "<tbody>"
|
61
|
+
text << rows.map do |row|
|
62
|
+
"<tr>" + row.map{|col| "<td>#{col}</td>"}.join("\n") + "</tr>"
|
63
|
+
end.join( "\n" )
|
64
|
+
text += "</tbody>"
|
65
|
+
text += "</table>"
|
66
|
+
end
|
67
|
+
|
68
|
+
def to_google_table
|
69
|
+
GoogleVisualization.render( rows, cols_info.map{|col| [col.col_type, col.header]} )
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Tableizer
|
2
|
+
class TextTable
|
3
|
+
def to_s(cols_info, rows)
|
4
|
+
headers = cols_info.map(&:header)
|
5
|
+
widths = col_widths(headers, rows)
|
6
|
+
text = ""
|
7
|
+
text << row_str(headers, widths) + "\n"
|
8
|
+
text << rows.map do |cols|
|
9
|
+
row_str(cols, widths)
|
10
|
+
end.join( "\n" )
|
11
|
+
end
|
12
|
+
|
13
|
+
def row_str(row, col_widths)
|
14
|
+
row.each_with_index.map do |val, index|
|
15
|
+
value_to_str(val, col_widths.fetch(index))
|
16
|
+
end.join('|')
|
17
|
+
end
|
18
|
+
|
19
|
+
def value_to_str(value, width)
|
20
|
+
"%#{width}s" % value.to_s.strip
|
21
|
+
end
|
22
|
+
|
23
|
+
def col_widths(headers, rows)
|
24
|
+
rows = [headers] + rows
|
25
|
+
widths = Array.new(headers.length, 0)
|
26
|
+
rows.each do |row|
|
27
|
+
row.each_with_index do |col, index|
|
28
|
+
width = col.to_s.length || 0
|
29
|
+
widths[index] = width if width > widths.fetch(index)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
widths
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/tableizer/version.rb
CHANGED
data/tableizer.gemspec
CHANGED
@@ -11,19 +11,8 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.add_development_dependency "bundler", "~> 1.0"
|
12
12
|
gem.add_development_dependency 'minitest'
|
13
13
|
gem.add_development_dependency 'minitest_should'
|
14
|
-
gem.add_development_dependency "bundler", "~> 1.0"
|
15
|
-
gem.add_development_dependency 'pry-rails'
|
16
14
|
gem.add_development_dependency 'pry-nav'
|
17
|
-
gem.add_development_dependency 'pry-doc'
|
18
|
-
gem.add_development_dependency 'pry-stack_explorer'
|
19
|
-
gem.add_development_dependency 'pry-remote'
|
20
15
|
|
21
|
-
gem.add_development_dependency "guard"
|
22
|
-
gem.add_development_dependency "guard-minitest"
|
23
|
-
gem.add_development_dependency 'rb-fsevent'
|
24
|
-
gem.add_development_dependency 'ruby_gntp'
|
25
|
-
gem.add_development_dependency 'ruby-prof'
|
26
|
-
gem.add_development_dependency 'debugger'
|
27
16
|
gem.authors = ["Martin Chabot"]
|
28
17
|
gem.email = ["chabotm@gmail.com"]
|
29
18
|
gem.description = %q{Adds the ability to Enumerable to generate tables into different formats}
|
@@ -1,67 +1,95 @@
|
|
1
1
|
$LOAD_PATH << (File.join(File.expand_path(File.dirname(__FILE__)),'..', 'lib'))
|
2
|
+
|
2
3
|
require_relative '../test_helper'
|
4
|
+
|
3
5
|
require 'tableizer/data_table'
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
should "return a DataTable" do
|
8
|
-
assert_kind_of( DataTable, [ 1,2,3 ].table{|a| [[ "Col1", a ],["Col2", a + 1] ]})
|
9
|
-
end
|
10
|
-
end
|
7
|
+
module Tableizer
|
8
|
+
class TestDataTable < MiniTest::Should::TestCase
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
context "A enumerable" do
|
11
|
+
should "return a DataTable" do
|
12
|
+
assert_kind_of(Table, [1, 2, 3].table{|a| [["Col1", a], ["Col2", a + 1]]})
|
13
|
+
end
|
15
14
|
end
|
16
15
|
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
context "A valid DataTable" do
|
17
|
+
setup do
|
18
|
+
@table = [1, 2, 3].table{ |elem| [ ["col1", elem * 2], ["col2", elem == 3 ? "60000" : (elem * 2 + 1).to_s] ] }
|
19
|
+
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
should "return the collected rows" do
|
22
|
+
assert_equal( [[2, "3"], [4, "5"],[ 6, "60000"]], @table.rows )
|
23
|
+
end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
should "return the headers" do
|
26
|
+
assert_equal( ["col1", "col2"], @table.cols_info.map{|col| col.header} )
|
27
|
+
end
|
28
|
+
|
29
|
+
should "detect the column types" do
|
30
|
+
assert_equal( [Fixnum, String], @table.cols_info.map{|col| col.col_type} )
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "An empty enumerable" do
|
35
|
+
setup do
|
36
|
+
enum = []
|
37
|
+
@table = enum.table{|a| [[:name, a.name]]}
|
38
|
+
end
|
39
|
+
|
40
|
+
should 'generate header' do
|
41
|
+
assert_equal 'name', @table.cols_info.first.header
|
42
|
+
# assert_equal 0, @table.rows.length
|
43
|
+
end
|
30
44
|
end
|
31
|
-
end
|
32
45
|
|
33
|
-
|
34
|
-
|
35
|
-
|
46
|
+
context "A Valid table with containing nil value" do
|
47
|
+
setup do
|
48
|
+
@table = [1, 2, 3].table do |elem|
|
36
49
|
[ [ "col1", elem ],
|
37
50
|
[ "col2", elem == 2 ? nil : (elem + 1).to_s ] ]
|
51
|
+
end
|
38
52
|
end
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
53
|
+
|
54
|
+
should "detect the column type" do
|
55
|
+
assert_equal( [Fixnum, String], @table.cols_info.map{|col_info| col_info.col_type })
|
56
|
+
end
|
57
|
+
|
58
|
+
should "be convertable to csv" do
|
59
|
+
expected = <<EOF
|
45
60
|
col1,col2
|
46
61
|
1,2
|
47
62
|
2,
|
48
63
|
3,4
|
49
64
|
EOF
|
50
|
-
|
51
|
-
|
52
|
-
end
|
65
|
+
assert_equal( expected, @table.to(:csv) )
|
66
|
+
end
|
53
67
|
|
54
|
-
|
55
|
-
|
56
|
-
|
68
|
+
should "convert to text" do
|
69
|
+
expected = <<EOF
|
70
|
+
col1|col2
|
71
|
+
1| 2
|
72
|
+
2|
|
73
|
+
3| 4
|
74
|
+
EOF
|
75
|
+
assert_equal expected.chomp, @table.to(:text)
|
76
|
+
end
|
57
77
|
end
|
58
|
-
|
59
|
-
|
78
|
+
|
79
|
+
context "A Valid table containing Time value should be convert to ISO 8601 string" do
|
80
|
+
setup do
|
81
|
+
@table = [Time.local(2009, 12, 1, 13, 44, 23)].table do |elem|
|
82
|
+
[ [ "col1", elem ]]
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
should "Convert time to UTC" do
|
87
|
+
expected = <<EOF
|
60
88
|
col1
|
61
|
-
2009-12-01
|
89
|
+
2009-12-01 13:44:23
|
62
90
|
EOF
|
91
|
+
assert_equal expected, @table.to(:csv)
|
92
|
+
end
|
63
93
|
end
|
64
94
|
end
|
65
|
-
|
66
95
|
end
|
67
|
-
|
File without changes
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,270 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tableizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Martin Chabot
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2017-12-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '1.0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '1.0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: minitest
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: minitest_should
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: bundler
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ~>
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '1.0'
|
86
|
-
type: :development
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '1.0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: pry-rails
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
102
|
-
type: :development
|
103
|
-
prerelease: false
|
104
|
-
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
66
|
+
- - ">="
|
108
67
|
- !ruby/object:Gem::Version
|
109
68
|
version: '0'
|
110
69
|
- !ruby/object:Gem::Dependency
|
111
70
|
name: pry-nav
|
112
71
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: pry-doc
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
|
-
requirements:
|
131
|
-
- - ! '>='
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: '0'
|
134
|
-
type: :development
|
135
|
-
prerelease: false
|
136
|
-
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
name: pry-stack_explorer
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
|
-
requirements:
|
147
|
-
- - ! '>='
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '0'
|
150
|
-
type: :development
|
151
|
-
prerelease: false
|
152
|
-
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '0'
|
158
|
-
- !ruby/object:Gem::Dependency
|
159
|
-
name: pry-remote
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
|
-
requirements:
|
163
|
-
- - ! '>='
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '0'
|
166
|
-
type: :development
|
167
|
-
prerelease: false
|
168
|
-
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
|
-
requirements:
|
171
|
-
- - ! '>='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
- !ruby/object:Gem::Dependency
|
175
|
-
name: guard
|
176
|
-
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
|
-
requirements:
|
179
|
-
- - ! '>='
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
version: '0'
|
182
|
-
type: :development
|
183
|
-
prerelease: false
|
184
|
-
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
|
-
requirements:
|
187
|
-
- - ! '>='
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '0'
|
190
|
-
- !ruby/object:Gem::Dependency
|
191
|
-
name: guard-minitest
|
192
|
-
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
|
-
requirements:
|
195
|
-
- - ! '>='
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
version: '0'
|
198
|
-
type: :development
|
199
|
-
prerelease: false
|
200
|
-
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
|
-
requirements:
|
203
|
-
- - ! '>='
|
204
|
-
- !ruby/object:Gem::Version
|
205
|
-
version: '0'
|
206
|
-
- !ruby/object:Gem::Dependency
|
207
|
-
name: rb-fsevent
|
208
|
-
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
|
-
requirements:
|
211
|
-
- - ! '>='
|
212
|
-
- !ruby/object:Gem::Version
|
213
|
-
version: '0'
|
214
|
-
type: :development
|
215
|
-
prerelease: false
|
216
|
-
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
|
-
requirements:
|
219
|
-
- - ! '>='
|
220
|
-
- !ruby/object:Gem::Version
|
221
|
-
version: '0'
|
222
|
-
- !ruby/object:Gem::Dependency
|
223
|
-
name: ruby_gntp
|
224
|
-
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
|
-
requirements:
|
227
|
-
- - ! '>='
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: '0'
|
230
|
-
type: :development
|
231
|
-
prerelease: false
|
232
|
-
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
|
-
requirements:
|
235
|
-
- - ! '>='
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: '0'
|
238
|
-
- !ruby/object:Gem::Dependency
|
239
|
-
name: ruby-prof
|
240
|
-
requirement: !ruby/object:Gem::Requirement
|
241
|
-
none: false
|
242
|
-
requirements:
|
243
|
-
- - ! '>='
|
244
|
-
- !ruby/object:Gem::Version
|
245
|
-
version: '0'
|
246
|
-
type: :development
|
247
|
-
prerelease: false
|
248
|
-
version_requirements: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
|
-
requirements:
|
251
|
-
- - ! '>='
|
252
|
-
- !ruby/object:Gem::Version
|
253
|
-
version: '0'
|
254
|
-
- !ruby/object:Gem::Dependency
|
255
|
-
name: debugger
|
256
|
-
requirement: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
72
|
requirements:
|
259
|
-
- -
|
73
|
+
- - ">="
|
260
74
|
- !ruby/object:Gem::Version
|
261
75
|
version: '0'
|
262
76
|
type: :development
|
263
77
|
prerelease: false
|
264
78
|
version_requirements: !ruby/object:Gem::Requirement
|
265
|
-
none: false
|
266
79
|
requirements:
|
267
|
-
- -
|
80
|
+
- - ">="
|
268
81
|
- !ruby/object:Gem::Version
|
269
82
|
version: '0'
|
270
83
|
description: Adds the ability to Enumerable to generate tables into different formats
|
@@ -274,7 +87,7 @@ executables: []
|
|
274
87
|
extensions: []
|
275
88
|
extra_rdoc_files: []
|
276
89
|
files:
|
277
|
-
- .gitignore
|
90
|
+
- ".gitignore"
|
278
91
|
- Gemfile
|
279
92
|
- Gemfile.lock
|
280
93
|
- Guardfile
|
@@ -282,46 +95,45 @@ files:
|
|
282
95
|
- README.md
|
283
96
|
- Rakefile
|
284
97
|
- lib/tableizer.rb
|
98
|
+
- lib/tableizer/csv_table.rb
|
285
99
|
- lib/tableizer/data_table.rb
|
100
|
+
- lib/tableizer/table.rb
|
101
|
+
- lib/tableizer/text_table.rb
|
286
102
|
- lib/tableizer/version.rb
|
287
103
|
- tableizer.gemspec
|
288
104
|
- test/.DS_Store
|
105
|
+
- test/tableizer/col_info.rb
|
289
106
|
- test/tableizer/data_table_test.rb
|
107
|
+
- test/tableizer/tableizer.rb
|
290
108
|
- test/tableizer_test.rb
|
291
109
|
- test/test_helper.rb
|
292
110
|
homepage: ''
|
293
111
|
licenses: []
|
112
|
+
metadata: {}
|
294
113
|
post_install_message:
|
295
114
|
rdoc_options: []
|
296
115
|
require_paths:
|
297
116
|
- lib
|
298
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
299
|
-
none: false
|
300
118
|
requirements:
|
301
|
-
- -
|
119
|
+
- - ">="
|
302
120
|
- !ruby/object:Gem::Version
|
303
121
|
version: '0'
|
304
|
-
segments:
|
305
|
-
- 0
|
306
|
-
hash: 1797285074806435226
|
307
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
308
|
-
none: false
|
309
123
|
requirements:
|
310
|
-
- -
|
124
|
+
- - ">="
|
311
125
|
- !ruby/object:Gem::Version
|
312
126
|
version: '0'
|
313
|
-
segments:
|
314
|
-
- 0
|
315
|
-
hash: 1797285074806435226
|
316
127
|
requirements: []
|
317
128
|
rubyforge_project:
|
318
|
-
rubygems_version:
|
129
|
+
rubygems_version: 2.6.13
|
319
130
|
signing_key:
|
320
|
-
specification_version:
|
131
|
+
specification_version: 4
|
321
132
|
summary: Adds the ability to Enumerable to generate tables into different formats
|
322
133
|
test_files:
|
323
134
|
- test/.DS_Store
|
135
|
+
- test/tableizer/col_info.rb
|
324
136
|
- test/tableizer/data_table_test.rb
|
137
|
+
- test/tableizer/tableizer.rb
|
325
138
|
- test/tableizer_test.rb
|
326
139
|
- test/test_helper.rb
|
327
|
-
has_rdoc:
|