terminal-table 1.4.3 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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