terminal-table 1.4.3 → 1.4.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.
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Terminal
3
3
  class Table
4
- VERSION = '1.4.3'
4
+ VERSION = '1.4.4'
5
5
  end
6
6
  end
data/spec/cell_spec.rb CHANGED
@@ -1,3 +1,7 @@
1
+ require 'rubygems'
2
+ require 'term/ansicolor'
3
+
4
+ class String; include Term::ANSIColor; end
1
5
 
2
6
  require File.dirname(__FILE__) + '/spec_helper'
3
7
 
@@ -5,14 +9,46 @@ describe Terminal::Table do
5
9
  Cell = Terminal::Table::Cell
6
10
 
7
11
  it "should default alignment to the left" do
8
- cell = Cell.new 0, 'foo'
12
+ cell = Cell.new :value => 'foo', :table => Terminal::Table.new, :index => 0
9
13
  cell.value.should == 'foo'
10
14
  cell.alignment.should == :left
11
15
  end
12
16
 
13
17
  it "should allow overriding of alignment" do
14
- cell = Cell.new 0, :value => 'foo', :alignment => :center
18
+ cell = Cell.new :value => 'foo', :alignment => :center, :table => Terminal::Table.new, :index => 0
15
19
  cell.value.should == 'foo'
16
20
  cell.alignment.should == :center
17
21
  end
22
+
23
+ it "should allow :left, :right and :center for alignment" do
24
+ @cell = Cell.new :value => 'foo', :table => Terminal::Table.new, :index => 0
25
+ @cell.alignment = :left
26
+ @cell.alignment = :right
27
+ @cell.alignment = :center
28
+ lambda { @cell.alignment = "foo" }.should raise_error
29
+ end
30
+
31
+ it "should allow multiline content" do
32
+ cell = Cell.new :value => "foo\nbarrissimo", :table => Terminal::Table.new, :index => 0
33
+ cell.value.should == "foo\nbarrissimo"
34
+ cell.lines.should == ['foo', 'barrissimo']
35
+ cell.value_for_column_width_recalc.should == 'barrissimo'
36
+ cell.render(1).should == " barrissimo "
37
+ end
38
+
39
+ it "should allow colorized content" do
40
+ cell = Cell.new :value => "foo".red, :table => Terminal::Table.new, :index => 0
41
+ cell.value.should == "\e[31mfoo\e[0m"
42
+ cell.value_for_column_width_recalc.should == 'foo'
43
+ cell.render.should == " \e[31mfoo\e[0m "
44
+ end
45
+
46
+ it "should render padding properly" do
47
+ @table = Terminal::Table.new(:rows => [['foo', '2'], ['3', '4']], :style => {:padding_right => 3})
48
+ cell = @table.rows.first.cells.first
49
+ cell.value.should == 'foo'
50
+ cell.alignment.should == :left
51
+ cell.render.should == " foo "
52
+ end
53
+
18
54
  end
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,6 @@ require File.dirname(__FILE__) + '/../lib/terminal-table'
3
3
 
4
4
  class String
5
5
  def deindent
6
- gsub /^ */, ''
6
+ strip.gsub(/^ */, '')
7
7
  end
8
8
  end
data/spec/table_spec.rb CHANGED
@@ -19,16 +19,16 @@ module Terminal
19
19
  @table.column_with_headings(2).should == [3,6]
20
20
  end
21
21
 
22
- it "should select the columns with colspans > 1 in the index" do
23
- @table << [1,{:value => 2, :colspan => 2}]
24
- @table << [{:value => 3, :colspan => 2}, 4]
25
- end
22
+ #it "should select the columns with colspans > 1 in the index" do
23
+ # @table << [1,{:value => 2, :colspan => 2}]
24
+ # @table << [{:value => 3, :colspan => 2}, 4]
25
+ #end
26
26
 
27
27
  it "should account for the colspan when selecting columns" do
28
28
  @table << [1,2,3]
29
29
  @table << [{:value => "4,5", :colspan => 2}, 6]
30
- @table.column_with_headings(0).should == [1,{:start_index => 0, :value => "4,5", :colspan => 2}]
31
- @table.column_with_headings(1).should == [2,{:start_index => 0, :value => "4,5", :colspan => 2}]
30
+ @table.column_with_headings(0).should == [1,"4,5"]
31
+ @table.column_with_headings(1).should == [2,"4,5"]
32
32
  @table.column_with_headings(2).should == [3,6]
33
33
  end
34
34
 
@@ -45,11 +45,6 @@ module Terminal
45
45
  EOF
46
46
  end
47
47
 
48
- it "should convert rows to indexes" do
49
- @table << [{:value => '7', :colspan => 2}, 88]
50
- @table.row_to_index(@table.rows[0], 1).should == 2
51
- end
52
-
53
48
  it "should count columns" do
54
49
  @table << [1, 2, 3]
55
50
  @table.number_of_columns.should == 3
@@ -71,64 +66,27 @@ module Terminal
71
66
  it "should select columns when using hashes" do
72
67
  @table.headings = ['one', 'two']
73
68
  @table.rows = [[{ :value => 'a', :align => :left }, 1], ['b', 2], ['c', 3]]
74
- @table.column(0).should == [{ :value => 'a', :align => :left }, 'b', 'c']
75
- end
76
-
77
- it "should determine length of largest cell in a column" do
78
- @table << ['foo', 'bar']
79
- @table << ['big foo', 'big foo bar']
80
- @table.length_of_largest_cell_in_column(1).should == 11
81
- end
82
-
83
- it "should determine length of largest cell in a column with multi-column rows" do
84
- @table << [1,2]
85
- @table << [{:value => '123456789', :colspan => 2}]
86
- # +-----+-----+
87
- # | 1 | 2 |
88
- # | 123456789 |
89
- #
90
- @table.length_of_largest_cell_in_column(0).should == 3
91
- @table.length_of_largest_cell_in_column(1).should == 3
92
-
93
- @table.render.should == <<-EOF.deindent
94
- +-----+-----+
95
- | 1 | 2 |
96
- | 123456789 |
97
- +-----+-----+
98
- EOF
99
- end
100
-
101
- it "should determine length of largest cell in a column with multi-column rows, rounding up" do
102
- @table << [1,2]
103
- @table << [{:value => '1234567890', :colspan => 2}]
104
- @table.length_of_largest_cell_in_column(0).should == 4
105
- @table.length_of_largest_cell_in_column(1).should == 4
106
-
107
- @table.render.should == <<-EOF.deindent
108
- +------+------+
109
- | 1 | 2 |
110
- | 1234567890 |
111
- +------+------+
112
- EOF
69
+ @table.column(0).should == ['a', 'b', 'c']
113
70
  end
114
71
 
115
72
  it "should find column length" do
116
73
  @table << ['foo', 'bar', 'a']
117
74
  @table << ['big foo', 'big foo bar']
118
- @table.length_of_column(1).should == 11
75
+ @table.column_width(1).should == 11
119
76
  end
120
77
 
121
78
  it "should find column length with headings" do
122
79
  @table.headings = ['one', 'super long heading']
123
80
  @table << ['foo', 'bar', 'a']
124
81
  @table << ['big foo', 'big foo bar']
125
- @table.length_of_column(1).should == 18
82
+ @table.column_width(1).should == 18
126
83
  end
127
84
 
128
85
  it "should render separators" do
129
86
  @table.headings = ['Char', 'Num']
130
87
  @table << ['a', 1]
131
- @table.separator.should == '+------+-----+'
88
+ separator = Terminal::Table::Separator.new(@table)
89
+ separator.render.should == '+------+-----+'
132
90
  end
133
91
 
134
92
  it "should add separator" do
@@ -136,11 +94,13 @@ module Terminal
136
94
  @table.add_separator
137
95
  @table << ['b', 2]
138
96
  @table.rows.size.should == 2
139
- @table.all_rows.size.should == 3
140
97
  end
141
98
 
142
- it "should bitch and complain when you have no rows" do
143
- lambda { @table.render }.should raise_error(Terminal::Table::Error)
99
+ it "should render an empty table properly" do
100
+ @table.render.should == <<-EOF.deindent
101
+ ++
102
+ ++
103
+ EOF
144
104
  end
145
105
 
146
106
  it "should render properly" do
@@ -159,6 +119,60 @@ module Terminal
159
119
  EOF
160
120
  end
161
121
 
122
+ it "should render styles properly" do
123
+ @table.headings = ['Char', 'Num']
124
+ @table.style = {:border_x => "=", :border_y => ":", :border_i => "x", :padding_left => 0, :padding_right => 2}
125
+ @table << ['a', 1]
126
+ @table << ['b', 2]
127
+ @table << ['c', 3]
128
+ @table.style.padding_right.should == 2
129
+ @table.render.should == <<-EOF.deindent
130
+ x======x=====x
131
+ :Char :Num :
132
+ x======x=====x
133
+ :a :1 :
134
+ :b :2 :
135
+ :c :3 :
136
+ x======x=====x
137
+ EOF
138
+ end
139
+
140
+ it "should render width properly" do
141
+ @table.headings = ['Char', 'Num']
142
+ @table << ['a', 1]
143
+ @table << ['b', 2]
144
+ @table << ['c', 3]
145
+ @table.style.width = 21
146
+ @table.render.should == <<-EOF.deindent
147
+ +---------+---------+
148
+ | Char | Num |
149
+ +---------+---------+
150
+ | a | 1 |
151
+ | b | 2 |
152
+ | c | 3 |
153
+ +---------+---------+
154
+ EOF
155
+ end
156
+
157
+ it "should render title properly" do
158
+ @table.title = "Title"
159
+ @table.headings = ['Char', 'Num']
160
+ @table << ['a', 1]
161
+ @table << ['b', 2]
162
+ @table << ['c', 3]
163
+ @table.render.should == <<-EOF.deindent
164
+ +-------+-----+
165
+ | Title |
166
+ +-------+-----+
167
+ | Char | Num |
168
+ +-------+-----+
169
+ | a | 1 |
170
+ | b | 2 |
171
+ | c | 3 |
172
+ +-------+-----+
173
+ EOF
174
+ end
175
+
162
176
  it "should render properly without headings" do
163
177
  @table << ['a', 1]
164
178
  @table << ['b', 2]
@@ -307,13 +321,13 @@ module Terminal
307
321
  t.should == t
308
322
  end
309
323
 
310
- it "should be equal with two empty tables" do
311
- table_one = Table.new
312
- table_two = Table.new
313
-
314
- table_one.should == table_two
315
- table_two.should == table_one
316
- end
324
+ # it "should be equal with two empty tables" do
325
+ # table_one = Table.new
326
+ # table_two = Table.new
327
+ #
328
+ # table_one.should == table_two
329
+ # table_two.should == table_one
330
+ # end
317
331
 
318
332
  it "should not be equal with different headings" do
319
333
  table_one = Table.new
@@ -329,8 +343,6 @@ module Terminal
329
343
  table_one = Table.new
330
344
  table_two = Table.new
331
345
 
332
- table_one.add_row "a"
333
-
334
346
  table_one.should_not == table_two
335
347
  table_two.should_not == table_one
336
348
  end
@@ -447,5 +459,67 @@ module Terminal
447
459
  +------+---+---+---+
448
460
  EOF
449
461
  end
462
+
463
+ it "should handle multiple colspan" do
464
+ @table.headings = [
465
+ 'name',
466
+ { :value => 'Values', :alignment => :right, :colspan => 2},
467
+ { :value => 'Other values', :alignment => :right, :colspan => 2},
468
+ { :value => 'Column 3', :alignment => :right, :colspan => 2}
469
+ ]
470
+
471
+ 3.times do |row_index|
472
+ row = ["row ##{row_index+1}"]
473
+ 6.times do |i|
474
+ row << row_index*6 + i
475
+ end
476
+ @table.add_row(row)
477
+ end
478
+
479
+ @table.render.should == <<-EOF.deindent
480
+ +--------+----+----+-------+-------+-----+-----+
481
+ | name | Values | Other values | Column 3 |
482
+ +--------+----+----+-------+-------+-----+-----+
483
+ | row #1 | 0 | 1 | 2 | 3 | 4 | 5 |
484
+ | row #2 | 6 | 7 | 8 | 9 | 10 | 11 |
485
+ | row #3 | 12 | 13 | 14 | 15 | 16 | 17 |
486
+ +--------+----+----+-------+-------+-----+-----+
487
+ EOF
488
+ end
489
+
490
+ it "should render a table with only X cell borders" do
491
+ @table.style = {:border_x => "-", :border_y => "", :border_i => ""}
492
+
493
+ @table.headings = ['name', { :value => 'values', :alignment => :right, :colspan => 3}]
494
+ @table.headings = ['name', { :value => 'values', :colspan => 3}]
495
+ @table.rows = [['a', 1, 2, 3], ['b', 4, 5, 6], ['c', 7, 8, 9]]
496
+
497
+ @table.render.should == <<-EOF.strip
498
+ ---------------
499
+ name values
500
+ ---------------
501
+ a 1 2 3
502
+ b 4 5 6
503
+ c 7 8 9
504
+ ---------------
505
+ EOF
506
+ end
507
+
508
+ it "should render a table without cell borders" do
509
+ @table.style = {:border_x => "", :border_y => "", :border_i => ""}
510
+
511
+ @table.headings = ['name', { :value => 'values', :alignment => :right, :colspan => 3}]
512
+ @table.headings = ['name', { :value => 'values', :colspan => 3}]
513
+ @table.rows = [['a', 1, 2, 3], ['b', 4, 5, 6], ['c', 7, 8, 9]]
514
+
515
+ @table.render.should == <<-EOF
516
+
517
+ name values
518
+
519
+ a 1 2 3
520
+ b 4 5 6
521
+ c 7 8 9
522
+ EOF
523
+ end
450
524
  end
451
525
  end
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{terminal-table}
5
- s.version = "1.4.3"
5
+ s.version = "1.4.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["TJ Holowaychuk", "Scott J. Goldman"]
9
- s.date = %q{2011-10-13}
9
+ s.date = %q{2011-11-07}
10
10
  s.description = %q{Simple, feature rich ascii table generation library}
11
11
  s.email = %q{tj@vision-media.ca}
12
- s.extra_rdoc_files = ["README.rdoc", "lib/terminal-table.rb", "lib/terminal-table/cell.rb", "lib/terminal-table/core_ext.rb", "lib/terminal-table/heading.rb", "lib/terminal-table/import.rb", "lib/terminal-table/table.rb", "lib/terminal-table/table_helper.rb", "lib/terminal-table/version.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
13
- s.files = ["History.rdoc", "Manifest", "README.rdoc", "Rakefile", "Todo.rdoc", "examples/examples.rb", "lib/terminal-table.rb", "lib/terminal-table/cell.rb", "lib/terminal-table/core_ext.rb", "lib/terminal-table/heading.rb", "lib/terminal-table/import.rb", "lib/terminal-table/table.rb", "lib/terminal-table/table_helper.rb", "lib/terminal-table/version.rb", "spec/cell_spec.rb", "spec/core_ext_spec.rb", "spec/import_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/table_spec.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake", "terminal-table.gemspec"]
12
+ s.extra_rdoc_files = ["README.rdoc", "lib/terminal-table.rb", "lib/terminal-table/cell.rb", "lib/terminal-table/core_ext.rb", "lib/terminal-table/import.rb", "lib/terminal-table/table.rb", "lib/terminal-table/table_helper.rb", "lib/terminal-table/version.rb", "lib/terminal-table/cell.rb", "lib/terminal-table/row.rb", "lib/terminal-table/separator.rb", "lib/terminal-table/style.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
13
+ s.files = ["History.rdoc", "Manifest", "README.rdoc", "Rakefile", "Todo.rdoc", "examples/examples.rb", "lib/terminal-table.rb", "lib/terminal-table/cell.rb", "lib/terminal-table/core_ext.rb", "lib/terminal-table/import.rb", "lib/terminal-table/table.rb", "lib/terminal-table/table_helper.rb", "lib/terminal-table/version.rb", "lib/terminal-table/cell.rb", "lib/terminal-table/row.rb", "lib/terminal-table/separator.rb", "lib/terminal-table/style.rb", "spec/cell_spec.rb", "spec/core_ext_spec.rb", "spec/import_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/table_spec.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake", "terminal-table.gemspec"]
14
14
  s.homepage = %q{http://github.com/visionmedia/terminal-table}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Terminal-table", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terminal-table
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-10-13 00:00:00.000000000Z
13
+ date: 2011-11-07 00:00:00.000000000Z
14
14
  dependencies: []
15
15
  description: Simple, feature rich ascii table generation library
16
16
  email: tj@vision-media.ca
@@ -21,11 +21,13 @@ extra_rdoc_files:
21
21
  - lib/terminal-table.rb
22
22
  - lib/terminal-table/cell.rb
23
23
  - lib/terminal-table/core_ext.rb
24
- - lib/terminal-table/heading.rb
25
24
  - lib/terminal-table/import.rb
26
25
  - lib/terminal-table/table.rb
27
26
  - lib/terminal-table/table_helper.rb
28
27
  - lib/terminal-table/version.rb
28
+ - lib/terminal-table/row.rb
29
+ - lib/terminal-table/separator.rb
30
+ - lib/terminal-table/style.rb
29
31
  - tasks/docs.rake
30
32
  - tasks/gemspec.rake
31
33
  - tasks/spec.rake
@@ -39,11 +41,13 @@ files:
39
41
  - lib/terminal-table.rb
40
42
  - lib/terminal-table/cell.rb
41
43
  - lib/terminal-table/core_ext.rb
42
- - lib/terminal-table/heading.rb
43
44
  - lib/terminal-table/import.rb
44
45
  - lib/terminal-table/table.rb
45
46
  - lib/terminal-table/table_helper.rb
46
47
  - lib/terminal-table/version.rb
48
+ - lib/terminal-table/row.rb
49
+ - lib/terminal-table/separator.rb
50
+ - lib/terminal-table/style.rb
47
51
  - spec/cell_spec.rb
48
52
  - spec/core_ext_spec.rb
49
53
  - spec/import_spec.rb
@@ -1,10 +0,0 @@
1
-
2
- module Terminal
3
- class Table
4
- class Heading < Cell
5
- def initialize width, params
6
- super
7
- end
8
- end
9
- end
10
- end