tty-table 0.7.0 → 0.12.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 (151) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +57 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +165 -94
  5. data/lib/tty-table.rb +1 -5
  6. data/lib/tty/table.rb +102 -42
  7. data/lib/tty/table/alignment_set.rb +3 -6
  8. data/lib/tty/table/border.rb +57 -68
  9. data/lib/tty/table/border/ascii.rb +17 -17
  10. data/lib/tty/table/border/null.rb +20 -22
  11. data/lib/tty/table/border/row_line.rb +4 -3
  12. data/lib/tty/table/border/unicode.rb +17 -17
  13. data/lib/tty/table/border_dsl.rb +28 -25
  14. data/lib/tty/table/border_options.rb +50 -25
  15. data/lib/tty/table/column_constraint.rb +29 -17
  16. data/lib/tty/table/{column_set.rb → columns.rb} +44 -69
  17. data/lib/tty/table/empty.rb +2 -0
  18. data/lib/tty/table/error.rb +1 -1
  19. data/lib/tty/table/field.rb +43 -35
  20. data/lib/tty/table/header.rb +7 -5
  21. data/lib/tty/table/indentation.rb +16 -25
  22. data/lib/tty/table/operation/alignment.rb +10 -8
  23. data/lib/tty/table/operation/escape.rb +2 -3
  24. data/lib/tty/table/operation/filter.rb +1 -1
  25. data/lib/tty/table/operation/padding.rb +4 -12
  26. data/lib/tty/table/operation/truncation.rb +4 -4
  27. data/lib/tty/table/operation/wrapped.rb +4 -4
  28. data/lib/tty/table/operations.rb +4 -15
  29. data/lib/tty/table/options.rb +2 -4
  30. data/lib/tty/table/orientation.rb +5 -5
  31. data/lib/tty/table/orientation/horizontal.rb +1 -1
  32. data/lib/tty/table/orientation/vertical.rb +1 -1
  33. data/lib/tty/table/renderer.rb +40 -35
  34. data/lib/tty/table/renderer/ascii.rb +4 -4
  35. data/lib/tty/table/renderer/basic.rb +85 -88
  36. data/lib/tty/table/renderer/unicode.rb +3 -3
  37. data/lib/tty/table/row.rb +10 -8
  38. data/lib/tty/table/transformation.rb +2 -2
  39. data/lib/tty/table/validatable.rb +25 -7
  40. data/lib/tty/table/version.rb +3 -3
  41. metadata +33 -283
  42. data/.gitignore +0 -14
  43. data/.rspec +0 -3
  44. data/.travis.yml +0 -24
  45. data/CODE_OF_CONDUCT.md +0 -49
  46. data/Gemfile +0 -18
  47. data/Rakefile +0 -8
  48. data/benchmarks/speed.rb +0 -41
  49. data/spec/spec_helper.rb +0 -50
  50. data/spec/unit/access_spec.rb +0 -86
  51. data/spec/unit/add_row_spec.rb +0 -28
  52. data/spec/unit/alignment_set/each_spec.rb +0 -17
  53. data/spec/unit/alignment_set/new_spec.rb +0 -27
  54. data/spec/unit/alignment_set/to_ary_spec.rb +0 -14
  55. data/spec/unit/alignment_spec.rb +0 -71
  56. data/spec/unit/border/ascii/rendering_spec.rb +0 -90
  57. data/spec/unit/border/new_spec.rb +0 -27
  58. data/spec/unit/border/null/rendering_spec.rb +0 -130
  59. data/spec/unit/border/options/from_spec.rb +0 -38
  60. data/spec/unit/border/options/new_spec.rb +0 -14
  61. data/spec/unit/border/unicode/rendering_spec.rb +0 -63
  62. data/spec/unit/border_options/new_spec.rb +0 -20
  63. data/spec/unit/border_options/update_spec.rb +0 -18
  64. data/spec/unit/column_constraint/enforce_spec.rb +0 -70
  65. data/spec/unit/column_constraint/widths_spec.rb +0 -35
  66. data/spec/unit/column_set/extract_widths_spec.rb +0 -48
  67. data/spec/unit/column_set/total_width_spec.rb +0 -15
  68. data/spec/unit/column_set/widths_from_spec.rb +0 -51
  69. data/spec/unit/data_spec.rb +0 -12
  70. data/spec/unit/each_spec.rb +0 -26
  71. data/spec/unit/each_with_index_spec.rb +0 -51
  72. data/spec/unit/empty_spec.rb +0 -23
  73. data/spec/unit/eql_spec.rb +0 -34
  74. data/spec/unit/field/equality_spec.rb +0 -51
  75. data/spec/unit/field/length_spec.rb +0 -35
  76. data/spec/unit/field/lines_spec.rb +0 -21
  77. data/spec/unit/field/new_spec.rb +0 -29
  78. data/spec/unit/field/width_spec.rb +0 -23
  79. data/spec/unit/filter_spec.rb +0 -22
  80. data/spec/unit/header/call_spec.rb +0 -30
  81. data/spec/unit/header/color_spec.rb +0 -19
  82. data/spec/unit/header/equality_spec.rb +0 -51
  83. data/spec/unit/header/height_spec.rb +0 -27
  84. data/spec/unit/header/new_spec.rb +0 -16
  85. data/spec/unit/header/set_spec.rb +0 -20
  86. data/spec/unit/header/to_ary_spec.rb +0 -14
  87. data/spec/unit/header_spec.rb +0 -13
  88. data/spec/unit/indentation/indent_spec.rb +0 -21
  89. data/spec/unit/new_spec.rb +0 -73
  90. data/spec/unit/operation/alignment/call_spec.rb +0 -39
  91. data/spec/unit/operation/escape/call_spec.rb +0 -15
  92. data/spec/unit/operation/filter/call_spec.rb +0 -16
  93. data/spec/unit/operation/truncation/call_spec.rb +0 -30
  94. data/spec/unit/operation/wrapped/call_spec.rb +0 -40
  95. data/spec/unit/operations/new_spec.rb +0 -30
  96. data/spec/unit/options/access_spec.rb +0 -14
  97. data/spec/unit/options_spec.rb +0 -25
  98. data/spec/unit/orientation_spec.rb +0 -145
  99. data/spec/unit/padding_spec.rb +0 -117
  100. data/spec/unit/properties_spec.rb +0 -25
  101. data/spec/unit/render_repeat_spec.rb +0 -42
  102. data/spec/unit/render_spec.rb +0 -63
  103. data/spec/unit/render_with_spec.rb +0 -106
  104. data/spec/unit/renderer/ascii/coloring_spec.rb +0 -70
  105. data/spec/unit/renderer/ascii/indentation_spec.rb +0 -41
  106. data/spec/unit/renderer/ascii/multiline_spec.rb +0 -101
  107. data/spec/unit/renderer/ascii/padding_spec.rb +0 -88
  108. data/spec/unit/renderer/ascii/render_spec.rb +0 -68
  109. data/spec/unit/renderer/ascii/resizing_spec.rb +0 -114
  110. data/spec/unit/renderer/ascii/separator_spec.rb +0 -28
  111. data/spec/unit/renderer/basic/alignment_spec.rb +0 -88
  112. data/spec/unit/renderer/basic/coloring_spec.rb +0 -61
  113. data/spec/unit/renderer/basic/extract_column_widths_spec.rb +0 -28
  114. data/spec/unit/renderer/basic/filter_spec.rb +0 -53
  115. data/spec/unit/renderer/basic/indentation_spec.rb +0 -48
  116. data/spec/unit/renderer/basic/multiline_spec.rb +0 -74
  117. data/spec/unit/renderer/basic/new_spec.rb +0 -26
  118. data/spec/unit/renderer/basic/options_spec.rb +0 -52
  119. data/spec/unit/renderer/basic/padding_spec.rb +0 -76
  120. data/spec/unit/renderer/basic/render_spec.rb +0 -57
  121. data/spec/unit/renderer/basic/resizing_spec.rb +0 -96
  122. data/spec/unit/renderer/basic/separator_spec.rb +0 -43
  123. data/spec/unit/renderer/basic/truncation_spec.rb +0 -35
  124. data/spec/unit/renderer/basic/wrapping_spec.rb +0 -40
  125. data/spec/unit/renderer/border_spec.rb +0 -104
  126. data/spec/unit/renderer/render_spec.rb +0 -36
  127. data/spec/unit/renderer/select_spec.rb +0 -22
  128. data/spec/unit/renderer/unicode/coloring_spec.rb +0 -70
  129. data/spec/unit/renderer/unicode/indentation_spec.rb +0 -41
  130. data/spec/unit/renderer/unicode/padding_spec.rb +0 -61
  131. data/spec/unit/renderer/unicode/render_spec.rb +0 -68
  132. data/spec/unit/renderer/unicode/separator_spec.rb +0 -26
  133. data/spec/unit/renderer_spec.rb +0 -19
  134. data/spec/unit/rotate_spec.rb +0 -86
  135. data/spec/unit/row/access_spec.rb +0 -25
  136. data/spec/unit/row/call_spec.rb +0 -45
  137. data/spec/unit/row/data_spec.rb +0 -26
  138. data/spec/unit/row/each_spec.rb +0 -31
  139. data/spec/unit/row/equality_spec.rb +0 -73
  140. data/spec/unit/row/height_spec.rb +0 -27
  141. data/spec/unit/row/new_spec.rb +0 -41
  142. data/spec/unit/row/to_ary_spec.rb +0 -14
  143. data/spec/unit/to_s_spec.rb +0 -56
  144. data/spec/unit/transformation/extract_tuples_spec.rb +0 -35
  145. data/spec/unit/utf_spec.rb +0 -33
  146. data/spec/unit/validatable/validate_options_spec.rb +0 -33
  147. data/spec/unit/validatable_spec.rb +0 -32
  148. data/tasks/console.rake +0 -10
  149. data/tasks/coverage.rake +0 -11
  150. data/tasks/spec.rake +0 -29
  151. data/tty-table.gemspec +0 -30
@@ -1,40 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe TTY::Table::Operation::Wrapped, '#call' do
6
- let(:text) { 'ラドクリフ、マラソン五輪代表に1万m出場にも含み' }
7
- let(:field) { TTY::Table::Field.new(text) }
8
-
9
- subject(:operation) { described_class.new(column_widths) }
10
-
11
- context 'without column width' do
12
- let(:column_widths) { [] }
13
-
14
- it "doesn't wrap string" do
15
- expect(operation.call(field, 0, 0)).to eql(text)
16
- end
17
- end
18
-
19
- context 'with column width' do
20
- let(:column_widths) { [12, 14] }
21
-
22
- it "wraps string for 0 column" do
23
- expect(operation.call(field, 0, 0)).to eql([
24
- "ラドクリフ、",
25
- "マラソン五輪",
26
- "代表に1万m出",
27
- "場にも含み"
28
- ].join("\n"))
29
- end
30
-
31
- it "wraps string for 1 column" do
32
- expect(operation.call(field, 0, 1)).to eql([
33
- "ラドクリフ、マ",
34
- "ラソン五輪代表",
35
- "に1万m出場にも",
36
- "含み"
37
- ].join("\n"))
38
- end
39
- end
40
- end
@@ -1,30 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe TTY::Table::Operations, '#new' do
6
- let(:object) { described_class }
7
- let(:row) { [1,2,3] }
8
- let(:table) { TTY::Table.new :rows => [row] }
9
- let(:callable) {
10
- Class.new do
11
- def call(val, row, col)
12
- val.value= val.value + 1
13
- end
14
- end
15
- }
16
- let(:instance) { callable.new }
17
-
18
- subject { object.new table }
19
-
20
- before { subject.add(:alignment, instance) }
21
-
22
- it 'stores away operations' do
23
- expect(subject[:alignment]).to include(instance)
24
- end
25
-
26
- it 'runs selected operations' do
27
- subject.run_operations(:alignment)
28
- expect(table.data[0]).to eql([2,3,4])
29
- end
30
- end
@@ -1,14 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- # describe TTY::Table::Options, 'options' do
6
- # let(:object) { described_class }
7
- #
8
- # subject { described_class.new({'a' => 1, :b => 2}) }
9
- #
10
- # it '' do
11
- # pending
12
- # expect(subject[:a]).to eql(1)
13
- # end
14
- # end
@@ -1,25 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe TTY::Table, 'options' do
6
- let(:rows) { [['a1', 'a2'], ['b1', 'b2']] }
7
- let(:widths) { nil }
8
- let(:aligns) { [] }
9
- let(:object) { described_class }
10
- let(:options) {
11
- {
12
- column_widths: widths,
13
- column_aligns: aligns,
14
- renderer: :basic
15
- }
16
- }
17
-
18
- subject(:table) { object.new rows, options }
19
-
20
- it { expect(table.header).to be_nil }
21
-
22
- it { expect(table.rows).to eq(rows) }
23
-
24
- it { expect(table.orientation).to be_kind_of TTY::Table::Orientation::Horizontal }
25
- end
@@ -1,145 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe TTY::Table, 'orientation' do
6
- let(:header) { ['h1', 'h2', 'h3'] }
7
- let(:rows) { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
8
- let(:options) { { :orientation => orientation } }
9
-
10
- subject { described_class.new(header, rows, options) }
11
-
12
- context 'when illegal option' do
13
- let(:orientation) { :accross }
14
-
15
- it { expect { subject }.to raise_error(TTY::Table::InvalidOrientationError) }
16
- end
17
-
18
- context 'when horizontal' do
19
- let(:orientation) { :horizontal }
20
-
21
- it { expect(subject.orientation).to be_kind_of TTY::Table::Orientation }
22
-
23
- it { expect(subject.orientation.name).to eql(:horizontal) }
24
-
25
- it { expect(subject.header).to eql(header) }
26
-
27
- it 'preserves original rows' do
28
- expect(subject.to_a).to eql(subject.data)
29
- end
30
-
31
- context 'without border' do
32
- it 'displays table' do
33
- expect(subject.to_s).to eq unindent(<<-EOS)
34
- h1 h2 h3
35
- a1 a2 a3
36
- b1 b2 b3
37
- EOS
38
- end
39
- end
40
-
41
- context 'with border' do
42
- let(:renderer) { :ascii }
43
-
44
- it 'diplays table' do
45
- expect(subject.render(renderer)).to eq unindent(<<-EOS)
46
- +--+--+--+
47
- |h1|h2|h3|
48
- +--+--+--+
49
- |a1|a2|a3|
50
- |b1|b2|b3|
51
- +--+--+--+
52
- EOS
53
- end
54
- end
55
- end
56
-
57
- context 'when vertical' do
58
- let(:orientation) { :vertical }
59
-
60
- it { expect(subject.orientation).to be_kind_of TTY::Table::Orientation }
61
-
62
- it { expect(subject.orientation.name).to eql :vertical }
63
-
64
- it { expect(subject.header).to be_empty }
65
-
66
- context 'with header' do
67
- it 'rotates original rows' do
68
- rotated_rows = [['h1','a1'],['h2','a2'],['h3','a3'], ['h1','b1'],['h2','b2'],['h3','b3']]
69
- expect(subject.to_a).to eql rotated_rows
70
- end
71
-
72
- context 'without border' do
73
- it 'displays table' do
74
- expect(subject.to_s).to eq unindent(<<-EOS)
75
- h1 a1
76
- h2 a2
77
- h3 a3
78
- h1 b1
79
- h2 b2
80
- h3 b3
81
- EOS
82
- end
83
- end
84
-
85
- context 'with border' do
86
- let(:renderer) { :ascii }
87
-
88
- it 'diplays table' do
89
- expect(subject.render(renderer)).to eq unindent(<<-EOS)
90
- +--+--+
91
- |h1|a1|
92
- |h2|a2|
93
- |h3|a3|
94
- |h1|b1|
95
- |h2|b2|
96
- |h3|b3|
97
- +--+--+
98
- EOS
99
- end
100
- end
101
- end
102
-
103
- context 'without header' do
104
- let(:header) { nil }
105
-
106
- it 'rotates original rows' do
107
- rotated_rows = [
108
- ['1','a1'],['2','a2'],['3','a3'],
109
- ['1','b1'],['2','b2'],['3','b3']
110
- ]
111
- expect(subject.to_a).to eql rotated_rows
112
- end
113
-
114
- context 'without border' do
115
- it 'displays table' do
116
- expect(subject.to_s).to eq unindent(<<-EOS)
117
- 1 a1
118
- 2 a2
119
- 3 a3
120
- 1 b1
121
- 2 b2
122
- 3 b3
123
- EOS
124
- end
125
- end
126
-
127
- context 'with border' do
128
- let(:renderer) { :ascii }
129
-
130
- it 'diplays table' do
131
- expect(subject.render(renderer)).to eq unindent(<<-EOS)
132
- +-+--+
133
- |1|a1|
134
- |2|a2|
135
- |3|a3|
136
- |1|b1|
137
- |2|b2|
138
- |3|b3|
139
- +-+--+
140
- EOS
141
- end
142
- end
143
- end
144
- end
145
- end # orientation
@@ -1,117 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe TTY::Table, 'padding' do
6
- let(:header) { ['h1', 'h2', 'h3'] }
7
- let(:rows) { [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] }
8
- let(:table) { described_class.new(header, rows) }
9
-
10
- it 'sets specific padding' do
11
- expect(table.render(:ascii) { |renderer|
12
- renderer.padding.right = 2
13
- renderer.padding.top = 1
14
- }).to eq unindent(<<-EOS)
15
- +----+----+----+
16
- | | | |
17
- |h1 |h2 |h3 |
18
- +----+----+----+
19
- | | | |
20
- |a1 |a2 |a3 |
21
- | | | |
22
- |b1 |b2 |b3 |
23
- +----+----+----+
24
- EOS
25
- end
26
-
27
- it 'sets padding for all' do
28
- expect(table.render(:ascii) { |renderer|
29
- renderer.padding= [1,2,1,2]
30
- }).to eq unindent(<<-EOS)
31
- +------+------+------+
32
- | | | |
33
- | h1 | h2 | h3 |
34
- | | | |
35
- +------+------+------+
36
- | | | |
37
- | a1 | a2 | a3 |
38
- | | | |
39
- | | | |
40
- | b1 | b2 | b3 |
41
- | | | |
42
- +------+------+------+
43
- EOS
44
- end
45
-
46
- context 'with column width' do
47
- let(:column_widths) { [4,4,4] }
48
-
49
- it 'sets padding for all' do
50
- expect(table.render(:ascii) { |renderer|
51
- renderer.column_widths = column_widths
52
- renderer.padding= [1,2,1,2]
53
- }).to eq unindent(<<-EOS)
54
- +--------+--------+--------+
55
- | | | |
56
- | h1 | h2 | h3 |
57
- | | | |
58
- +--------+--------+--------+
59
- | | | |
60
- | a1 | a2 | a3 |
61
- | | | |
62
- | | | |
63
- | b1 | b2 | b3 |
64
- | | | |
65
- +--------+--------+--------+
66
- EOS
67
- end
68
- end
69
-
70
- context 'with multi line text' do
71
- let(:header) { ['h1', 'head2'] }
72
- let(:rows) { [["Multi\nLine", "Text\nthat\nwraps"],
73
- ["Some\nother\ntext", 'Simple']] }
74
-
75
- context 'when wrapped' do
76
- it 'sets padding for all' do
77
- expect(table.render(:ascii) { |renderer|
78
- renderer.multiline = true
79
- renderer.padding= [1,2,1,2]
80
- }).to eq unindent(<<-EOS)
81
- +---------+----------+
82
- | | |
83
- | h1 | head2 |
84
- | | |
85
- +---------+----------+
86
- | | |
87
- | Multi | Text |
88
- | Line | that |
89
- | | wraps |
90
- | | |
91
- | | |
92
- | Some | Simple |
93
- | other | |
94
- | text | |
95
- | | |
96
- +---------+----------+
97
- EOS
98
- end
99
- end
100
-
101
- context 'when escaped' do
102
- it 'sets padding for all' do
103
- expect(table.render(:ascii) { |renderer|
104
- renderer.multiline = false
105
- renderer.padding= [0,2,0,2]
106
- }).to eq unindent(<<-EOS)
107
- +---------------------+---------------------+
108
- | h1 | head2 |
109
- +---------------------+---------------------+
110
- | Multi\\nLine | Text\\nthat\\nwraps |
111
- | Some\\nother\\ntext | Simple |
112
- +---------------------+---------------------+
113
- EOS
114
- end
115
- end
116
- end
117
- end
@@ -1,25 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe TTY::Table, 'properties' do
6
- let(:rows) {[['a1', 'a2', 'a3'], ['b1', 'b2', 'c3']] }
7
-
8
- subject(:table) { described_class.new rows }
9
-
10
- it { expect(table.width).to eq(6) }
11
-
12
- it { expect(table.rows_size).to eq(2) }
13
-
14
- it { expect(table.columns_size).to eq(3) }
15
-
16
- it { expect(table.size).to eq([2,3]) }
17
-
18
- context 'no size' do
19
- let(:rows) { [] }
20
-
21
- it { expect(table.rows_size).to eq(0) }
22
-
23
- it { expect(table.columns_size).to eq(0) }
24
- end
25
- end
@@ -1,42 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe TTY::Table, 'render repeat' do
6
-
7
- it "renders consistently" do
8
- table = TTY::Table.new header: ['header1', 'header2']
9
- table << ['a1', 'a2']
10
- table << ['b1', 'b2']
11
- options = {padding: [1,1,1,1], alignments: [:right, :center]}
12
- expect(table.render(:ascii, options)).to eq unindent(<<-EOS)
13
- +---------+---------+
14
- | | |
15
- | header1 | header2 |
16
- | | |
17
- +---------+---------+
18
- | | |
19
- | a1 | a2 |
20
- | | |
21
- | | |
22
- | b1 | b2 |
23
- | | |
24
- +---------+---------+
25
- EOS
26
-
27
- expect(table.render(:ascii, options)).to eq unindent(<<-EOS)
28
- +---------+---------+
29
- | | |
30
- | header1 | header2 |
31
- | | |
32
- +---------+---------+
33
- | | |
34
- | a1 | a2 |
35
- | | |
36
- | | |
37
- | b1 | b2 |
38
- | | |
39
- +---------+---------+
40
- EOS
41
- end
42
- end