tty-table 0.9.0 → 0.10.0

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -3
  3. data/CHANGELOG.md +16 -0
  4. data/Gemfile +4 -4
  5. data/README.md +3 -3
  6. data/appveyor.yml +2 -0
  7. data/benchmarks/speed.rb +3 -5
  8. data/examples/alignment.rb +3 -3
  9. data/examples/basic.rb +2 -2
  10. data/examples/orientation.rb +13 -0
  11. data/examples/padding.rb +15 -0
  12. data/examples/resize.rb +15 -0
  13. data/lib/tty/table.rb +2 -1
  14. data/lib/tty/table/border.rb +4 -12
  15. data/lib/tty/table/column_constraint.rb +15 -7
  16. data/lib/tty/table/columns.rb +42 -68
  17. data/lib/tty/table/field.rb +3 -13
  18. data/lib/tty/table/indentation.rb +9 -20
  19. data/lib/tty/table/operation/alignment.rb +2 -2
  20. data/lib/tty/table/operation/padding.rb +3 -3
  21. data/lib/tty/table/operation/truncation.rb +3 -3
  22. data/lib/tty/table/operation/wrapped.rb +3 -3
  23. data/lib/tty/table/operations.rb +3 -14
  24. data/lib/tty/table/renderer.rb +28 -24
  25. data/lib/tty/table/renderer/ascii.rb +1 -1
  26. data/lib/tty/table/renderer/basic.rb +42 -41
  27. data/lib/tty/table/renderer/unicode.rb +1 -1
  28. data/lib/tty/table/version.rb +1 -3
  29. data/spec/unit/border/ascii/rendering_spec.rb +1 -1
  30. data/spec/unit/border/null/rendering_spec.rb +1 -1
  31. data/spec/unit/border/unicode/rendering_spec.rb +1 -1
  32. data/spec/unit/column_constraint/enforce_spec.rb +2 -2
  33. data/spec/unit/columns/extract_widths_spec.rb +7 -12
  34. data/spec/unit/columns/total_width_spec.rb +3 -4
  35. data/spec/unit/indentation/indent_spec.rb +2 -6
  36. data/spec/unit/operations/new_spec.rb +3 -5
  37. data/spec/unit/renderer/ascii/padding_spec.rb +29 -0
  38. data/tty-table.gemspec +3 -4
  39. metadata +12 -24
@@ -4,7 +4,7 @@ require_relative '../border/unicode'
4
4
 
5
5
  module TTY
6
6
  class Table
7
- class Renderer
7
+ module Renderer
8
8
  # Unicode representation of table renderer
9
9
  #
10
10
  # @api private
@@ -1,7 +1,5 @@
1
- # coding: utf-8
2
-
3
1
  module TTY
4
2
  class Table
5
- VERSION = "0.9.0"
3
+ VERSION = '0.10.0'.freeze
6
4
  end # Table
7
5
  end # TTY
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
 
5
5
  RSpec.describe TTY::Table::Border::ASCII, '#rendering' do
6
6
 
7
- subject(:border) { described_class.new(column_widths, [0,0,0,0]) }
7
+ subject(:border) { described_class.new(column_widths) }
8
8
 
9
9
  context 'with empty row' do
10
10
  let(:row) { TTY::Table::Row.new([]) }
@@ -5,7 +5,7 @@ require 'spec_helper'
5
5
  RSpec.describe TTY::Table::Border::Null, '#rendering' do
6
6
  let(:border) { nil }
7
7
 
8
- subject { described_class.new column_widths, [0,0,0,0], border }
8
+ subject { described_class.new column_widths, border }
9
9
 
10
10
  context 'with empty row' do
11
11
  let(:row) { TTY::Table::Row.new([]) }
@@ -4,7 +4,7 @@ require 'spec_helper'
4
4
 
5
5
  RSpec.describe TTY::Table::Border::Unicode, '#rendering' do
6
6
 
7
- subject(:border) { described_class.new(column_widths, [0,0,0,0]) }
7
+ subject(:border) { described_class.new(column_widths) }
8
8
 
9
9
  context 'with empty row' do
10
10
  let(:row) { TTY::Table::Row.new([]) }
@@ -25,9 +25,9 @@ RSpec.describe TTY::Table::ColumnConstraint, '#enforce' do
25
25
  let(:options) { { width: 11, resize: true }}
26
26
 
27
27
  it 'raises error when table width is too small' do
28
- allow(columns).to receive(:expand)
28
+ allow(columns).to receive(:expand_column_widths)
29
29
  columns.enforce
30
- expect(columns).to have_received(:expand)
30
+ expect(columns).to have_received(:expand_column_widths)
31
31
  end
32
32
  end
33
33
 
@@ -6,33 +6,29 @@ RSpec.describe TTY::Table::Columns, '#extract_widths' do
6
6
  it 'extract widths' do
7
7
  header = ['h1', 'h2', 'h3']
8
8
  rows = [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']]
9
- table = TTY::Table.new header, rows
10
- column_set = TTY::Table::Columns.new(table)
11
- expect(column_set.extract_widths).to eql([2,2,2])
9
+ table = TTY::Table.new(header, rows)
10
+ expect(described_class.extract_widths(table.data)).to eql([2,2,2])
12
11
  end
13
12
 
14
13
  it "extracts widths from utf" do
15
14
  header = ['h1', 'うなじ']
16
15
  rows = [['こんにちは', 'a2'], ['b1','選択']]
17
- table = TTY::Table.new header, rows
18
- column_set = TTY::Table::Columns.new(table)
19
- expect(column_set.extract_widths).to eql([10,6])
16
+ table = TTY::Table.new(header, rows)
17
+ expect(described_class.extract_widths(table.data)).to eql([10,6])
20
18
  end
21
19
 
22
20
  it "extracts widths from multiline text" do
23
21
  table = TTY::Table.new
24
22
  table << ["Multi\nLine\nContent", "Text\nthat\nwraps"]
25
23
  table << ["Some\nother\ntext", 'Simple']
26
- column_set = TTY::Table::Columns.new(table)
27
- expect(column_set.extract_widths).to eq([7,6])
24
+ expect(described_class.extract_widths(table.data)).to eq([7,6])
28
25
  end
29
26
 
30
27
  it "extracts widths from multiline text" do
31
28
  table = TTY::Table.new
32
29
  table << ["Multi\\nLine\\nContent", "Text\\nthat\\nwraps"]
33
30
  table << ["Some\\nother\\ntext", 'Simple']
34
- column_set = TTY::Table::Columns.new(table)
35
- expect(column_set.extract_widths).to eq([20, 17])
31
+ expect(described_class.extract_widths(table.data)).to eq([20, 17])
36
32
  end
37
33
 
38
34
  it "extracts widths from ANSI text" do
@@ -40,7 +36,6 @@ RSpec.describe TTY::Table::Columns, '#extract_widths' do
40
36
  table = TTY::Table.new header: header
41
37
  table << [color.green.on_blue('a1'), 'a2']
42
38
  table << ['b1', color.red.on_yellow('b2')]
43
- column_set = TTY::Table::Columns.new(table)
44
- expect(column_set.extract_widths).to eq([2,2])
39
+ expect(described_class.extract_widths(table.data)).to eq([2,2])
45
40
  end
46
41
  end
@@ -1,13 +1,12 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  RSpec.describe TTY::Table::Columns, '#extract_widths!' do
4
5
  let(:header) { ['h1', 'h2', 'h3'] }
5
6
  let(:rows) { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
6
- let(:table) { TTY::Table.new header, rows }
7
-
8
- subject { described_class.new table }
9
7
 
10
8
  it 'extract widths' do
11
- expect(subject.total_width).to eql(6)
9
+ table = TTY::Table.new(header, rows)
10
+ expect(described_class.total_width(table.data)).to eql(6)
12
11
  end
13
12
  end
@@ -3,19 +3,15 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe TTY::Table::Indentation, '.indent' do
6
- let(:indent) { 2 }
7
-
8
- subject(:indentation) { described_class.new(indent) }
9
-
10
6
  context 'when enumerable' do
11
7
  it 'inserts indentation for each element' do
12
- expect(indentation.indent(['line1'])).to eql([' line1'])
8
+ expect(described_class.indent(['line1'], 2)).to eql([' line1'])
13
9
  end
14
10
  end
15
11
 
16
12
  context 'when string' do
17
13
  it 'inserts indentation' do
18
- expect(indentation.indent('line1')).to eql(' line1')
14
+ expect(described_class.indent('line1', 2)).to eql(' line1')
19
15
  end
20
16
  end
21
17
  end
@@ -1,7 +1,5 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'spec_helper'
4
-
5
3
  RSpec.describe TTY::Table::Operations, '#new' do
6
4
  let(:object) { described_class }
7
5
  let(:row) { [1,2,3] }
@@ -15,7 +13,7 @@ RSpec.describe TTY::Table::Operations, '#new' do
15
13
  }
16
14
  let(:instance) { callable.new }
17
15
 
18
- subject { object.new table }
16
+ subject { object.new }
19
17
 
20
18
  before { subject.add(:alignment, instance) }
21
19
 
@@ -23,8 +21,8 @@ RSpec.describe TTY::Table::Operations, '#new' do
23
21
  expect(subject[:alignment]).to include(instance)
24
22
  end
25
23
 
26
- it 'runs selected operations' do
27
- subject.run_operations(:alignment)
24
+ it 'applies selected operations' do
25
+ subject.apply_to(table, :alignment)
28
26
  expect(table.data[0]).to eql([2,3,4])
29
27
  end
30
28
  end
@@ -85,4 +85,33 @@ RSpec.describe TTY::Table::Renderer::ASCII, 'padding' do
85
85
  EOS
86
86
  end
87
87
  end
88
+
89
+ context "with resize option" do
90
+ it "pads fields correctly" do
91
+ table = TTY::Table.new(header: [ "Column 1", "Column 2", "Column 3"]) do |t|
92
+ t << [ "11", "12", "13" ]
93
+ t << [ "21", "22", "23" ]
94
+ t << [ "31", "32", "33" ]
95
+ end
96
+
97
+ renderer = TTY::Table::Renderer::ASCII.new(table, padding: [1,1,1,1], resize: true, width: 50)
98
+ expect(renderer.render).to eql unindent(<<-EOS)
99
+ +----------------+---------------+---------------+
100
+ | | | |
101
+ | Column 1 | Column 2 | Column 3 |
102
+ | | | |
103
+ +----------------+---------------+---------------+
104
+ | | | |
105
+ | 11 | 12 | 13 |
106
+ | | | |
107
+ | | | |
108
+ | 21 | 22 | 23 |
109
+ | | | |
110
+ | | | |
111
+ | 31 | 32 | 33 |
112
+ | | | |
113
+ +----------------+---------------+---------------+
114
+ EOS
115
+ end
116
+ end
88
117
  end
@@ -22,10 +22,9 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_dependency 'equatable', '~> 0.5.0'
24
24
  spec.add_dependency 'necromancer', '~> 0.4.0'
25
- spec.add_dependency 'pastel', '~> 0.7.0'
26
- spec.add_dependency 'tty-screen', '~> 0.6.0'
27
- spec.add_dependency 'verse', '~> 0.5.0'
28
- spec.add_dependency 'unicode-display_width','~> 1.1.0'
25
+ spec.add_dependency 'pastel', '~> 0.7.2'
26
+ spec.add_dependency 'tty-screen', '~> 0.6.4'
27
+ spec.add_dependency 'strings', '~> 0.1.0'
29
28
 
30
29
  spec.add_development_dependency 'bundler', '>= 1.5.0', '< 2.0'
31
30
  spec.add_development_dependency 'rake'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tty-table
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Murach
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-04 00:00:00.000000000 Z
11
+ date: 2018-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: equatable
@@ -44,56 +44,42 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.7.0
47
+ version: 0.7.2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.7.0
54
+ version: 0.7.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: tty-screen
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.6.0
61
+ version: 0.6.4
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.6.0
68
+ version: 0.6.4
69
69
  - !ruby/object:Gem::Dependency
70
- name: verse
70
+ name: strings
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.5.0
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.5.0
83
- - !ruby/object:Gem::Dependency
84
- name: unicode-display_width
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 1.1.0
75
+ version: 0.1.0
90
76
  type: :runtime
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: 1.1.0
82
+ version: 0.1.0
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: bundler
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -162,6 +148,9 @@ files:
162
148
  - benchmarks/speed.rb
163
149
  - examples/alignment.rb
164
150
  - examples/basic.rb
151
+ - examples/orientation.rb
152
+ - examples/padding.rb
153
+ - examples/resize.rb
165
154
  - lib/tty-table.rb
166
155
  - lib/tty/table.rb
167
156
  - lib/tty/table/alignment_set.rb
@@ -425,4 +414,3 @@ test_files:
425
414
  - spec/unit/utf_spec.rb
426
415
  - spec/unit/validatable/validate_options_spec.rb
427
416
  - spec/unit/validatable_spec.rb
428
- has_rdoc: