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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +57 -0
- data/LICENSE.txt +1 -1
- data/README.md +165 -94
- data/lib/tty-table.rb +1 -5
- data/lib/tty/table.rb +102 -42
- data/lib/tty/table/alignment_set.rb +3 -6
- data/lib/tty/table/border.rb +57 -68
- data/lib/tty/table/border/ascii.rb +17 -17
- data/lib/tty/table/border/null.rb +20 -22
- data/lib/tty/table/border/row_line.rb +4 -3
- data/lib/tty/table/border/unicode.rb +17 -17
- data/lib/tty/table/border_dsl.rb +28 -25
- data/lib/tty/table/border_options.rb +50 -25
- data/lib/tty/table/column_constraint.rb +29 -17
- data/lib/tty/table/{column_set.rb → columns.rb} +44 -69
- data/lib/tty/table/empty.rb +2 -0
- data/lib/tty/table/error.rb +1 -1
- data/lib/tty/table/field.rb +43 -35
- data/lib/tty/table/header.rb +7 -5
- data/lib/tty/table/indentation.rb +16 -25
- data/lib/tty/table/operation/alignment.rb +10 -8
- data/lib/tty/table/operation/escape.rb +2 -3
- data/lib/tty/table/operation/filter.rb +1 -1
- data/lib/tty/table/operation/padding.rb +4 -12
- data/lib/tty/table/operation/truncation.rb +4 -4
- data/lib/tty/table/operation/wrapped.rb +4 -4
- data/lib/tty/table/operations.rb +4 -15
- data/lib/tty/table/options.rb +2 -4
- data/lib/tty/table/orientation.rb +5 -5
- data/lib/tty/table/orientation/horizontal.rb +1 -1
- data/lib/tty/table/orientation/vertical.rb +1 -1
- data/lib/tty/table/renderer.rb +40 -35
- data/lib/tty/table/renderer/ascii.rb +4 -4
- data/lib/tty/table/renderer/basic.rb +85 -88
- data/lib/tty/table/renderer/unicode.rb +3 -3
- data/lib/tty/table/row.rb +10 -8
- data/lib/tty/table/transformation.rb +2 -2
- data/lib/tty/table/validatable.rb +25 -7
- data/lib/tty/table/version.rb +3 -3
- metadata +33 -283
- data/.gitignore +0 -14
- data/.rspec +0 -3
- data/.travis.yml +0 -24
- data/CODE_OF_CONDUCT.md +0 -49
- data/Gemfile +0 -18
- data/Rakefile +0 -8
- data/benchmarks/speed.rb +0 -41
- data/spec/spec_helper.rb +0 -50
- data/spec/unit/access_spec.rb +0 -86
- data/spec/unit/add_row_spec.rb +0 -28
- data/spec/unit/alignment_set/each_spec.rb +0 -17
- data/spec/unit/alignment_set/new_spec.rb +0 -27
- data/spec/unit/alignment_set/to_ary_spec.rb +0 -14
- data/spec/unit/alignment_spec.rb +0 -71
- data/spec/unit/border/ascii/rendering_spec.rb +0 -90
- data/spec/unit/border/new_spec.rb +0 -27
- data/spec/unit/border/null/rendering_spec.rb +0 -130
- data/spec/unit/border/options/from_spec.rb +0 -38
- data/spec/unit/border/options/new_spec.rb +0 -14
- data/spec/unit/border/unicode/rendering_spec.rb +0 -63
- data/spec/unit/border_options/new_spec.rb +0 -20
- data/spec/unit/border_options/update_spec.rb +0 -18
- data/spec/unit/column_constraint/enforce_spec.rb +0 -70
- data/spec/unit/column_constraint/widths_spec.rb +0 -35
- data/spec/unit/column_set/extract_widths_spec.rb +0 -48
- data/spec/unit/column_set/total_width_spec.rb +0 -15
- data/spec/unit/column_set/widths_from_spec.rb +0 -51
- data/spec/unit/data_spec.rb +0 -12
- data/spec/unit/each_spec.rb +0 -26
- data/spec/unit/each_with_index_spec.rb +0 -51
- data/spec/unit/empty_spec.rb +0 -23
- data/spec/unit/eql_spec.rb +0 -34
- data/spec/unit/field/equality_spec.rb +0 -51
- data/spec/unit/field/length_spec.rb +0 -35
- data/spec/unit/field/lines_spec.rb +0 -21
- data/spec/unit/field/new_spec.rb +0 -29
- data/spec/unit/field/width_spec.rb +0 -23
- data/spec/unit/filter_spec.rb +0 -22
- data/spec/unit/header/call_spec.rb +0 -30
- data/spec/unit/header/color_spec.rb +0 -19
- data/spec/unit/header/equality_spec.rb +0 -51
- data/spec/unit/header/height_spec.rb +0 -27
- data/spec/unit/header/new_spec.rb +0 -16
- data/spec/unit/header/set_spec.rb +0 -20
- data/spec/unit/header/to_ary_spec.rb +0 -14
- data/spec/unit/header_spec.rb +0 -13
- data/spec/unit/indentation/indent_spec.rb +0 -21
- data/spec/unit/new_spec.rb +0 -73
- data/spec/unit/operation/alignment/call_spec.rb +0 -39
- data/spec/unit/operation/escape/call_spec.rb +0 -15
- data/spec/unit/operation/filter/call_spec.rb +0 -16
- data/spec/unit/operation/truncation/call_spec.rb +0 -30
- data/spec/unit/operation/wrapped/call_spec.rb +0 -40
- data/spec/unit/operations/new_spec.rb +0 -30
- data/spec/unit/options/access_spec.rb +0 -14
- data/spec/unit/options_spec.rb +0 -25
- data/spec/unit/orientation_spec.rb +0 -145
- data/spec/unit/padding_spec.rb +0 -117
- data/spec/unit/properties_spec.rb +0 -25
- data/spec/unit/render_repeat_spec.rb +0 -42
- data/spec/unit/render_spec.rb +0 -63
- data/spec/unit/render_with_spec.rb +0 -106
- data/spec/unit/renderer/ascii/coloring_spec.rb +0 -70
- data/spec/unit/renderer/ascii/indentation_spec.rb +0 -41
- data/spec/unit/renderer/ascii/multiline_spec.rb +0 -101
- data/spec/unit/renderer/ascii/padding_spec.rb +0 -88
- data/spec/unit/renderer/ascii/render_spec.rb +0 -68
- data/spec/unit/renderer/ascii/resizing_spec.rb +0 -114
- data/spec/unit/renderer/ascii/separator_spec.rb +0 -28
- data/spec/unit/renderer/basic/alignment_spec.rb +0 -88
- data/spec/unit/renderer/basic/coloring_spec.rb +0 -61
- data/spec/unit/renderer/basic/extract_column_widths_spec.rb +0 -28
- data/spec/unit/renderer/basic/filter_spec.rb +0 -53
- data/spec/unit/renderer/basic/indentation_spec.rb +0 -48
- data/spec/unit/renderer/basic/multiline_spec.rb +0 -74
- data/spec/unit/renderer/basic/new_spec.rb +0 -26
- data/spec/unit/renderer/basic/options_spec.rb +0 -52
- data/spec/unit/renderer/basic/padding_spec.rb +0 -76
- data/spec/unit/renderer/basic/render_spec.rb +0 -57
- data/spec/unit/renderer/basic/resizing_spec.rb +0 -96
- data/spec/unit/renderer/basic/separator_spec.rb +0 -43
- data/spec/unit/renderer/basic/truncation_spec.rb +0 -35
- data/spec/unit/renderer/basic/wrapping_spec.rb +0 -40
- data/spec/unit/renderer/border_spec.rb +0 -104
- data/spec/unit/renderer/render_spec.rb +0 -36
- data/spec/unit/renderer/select_spec.rb +0 -22
- data/spec/unit/renderer/unicode/coloring_spec.rb +0 -70
- data/spec/unit/renderer/unicode/indentation_spec.rb +0 -41
- data/spec/unit/renderer/unicode/padding_spec.rb +0 -61
- data/spec/unit/renderer/unicode/render_spec.rb +0 -68
- data/spec/unit/renderer/unicode/separator_spec.rb +0 -26
- data/spec/unit/renderer_spec.rb +0 -19
- data/spec/unit/rotate_spec.rb +0 -86
- data/spec/unit/row/access_spec.rb +0 -25
- data/spec/unit/row/call_spec.rb +0 -45
- data/spec/unit/row/data_spec.rb +0 -26
- data/spec/unit/row/each_spec.rb +0 -31
- data/spec/unit/row/equality_spec.rb +0 -73
- data/spec/unit/row/height_spec.rb +0 -27
- data/spec/unit/row/new_spec.rb +0 -41
- data/spec/unit/row/to_ary_spec.rb +0 -14
- data/spec/unit/to_s_spec.rb +0 -56
- data/spec/unit/transformation/extract_tuples_spec.rb +0 -35
- data/spec/unit/utf_spec.rb +0 -33
- data/spec/unit/validatable/validate_options_spec.rb +0 -33
- data/spec/unit/validatable_spec.rb +0 -32
- data/tasks/console.rake +0 -10
- data/tasks/coverage.rake +0 -11
- data/tasks/spec.rake +0 -29
- data/tty-table.gemspec +0 -30
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "../border"
|
4
4
|
|
5
5
|
module TTY
|
6
6
|
class Table
|
@@ -11,21 +11,21 @@ module TTY
|
|
11
11
|
class ASCII < Border
|
12
12
|
|
13
13
|
def_border do
|
14
|
-
top
|
15
|
-
top_mid
|
16
|
-
top_left
|
17
|
-
top_right
|
18
|
-
bottom
|
19
|
-
bottom_mid
|
20
|
-
bottom_left
|
21
|
-
bottom_right
|
22
|
-
mid
|
23
|
-
mid_mid
|
24
|
-
mid_left
|
25
|
-
mid_right
|
26
|
-
left
|
27
|
-
center
|
28
|
-
right
|
14
|
+
top "-"
|
15
|
+
top_mid "+"
|
16
|
+
top_left "+"
|
17
|
+
top_right "+"
|
18
|
+
bottom "-"
|
19
|
+
bottom_mid "+"
|
20
|
+
bottom_left "+"
|
21
|
+
bottom_right "+"
|
22
|
+
mid "-"
|
23
|
+
mid_mid "+"
|
24
|
+
mid_left "+"
|
25
|
+
mid_right "+"
|
26
|
+
left "|"
|
27
|
+
center "|"
|
28
|
+
right "|"
|
29
29
|
end
|
30
30
|
|
31
31
|
end # ASCII
|
@@ -1,37 +1,35 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "../border"
|
4
4
|
|
5
5
|
module TTY
|
6
6
|
class Table
|
7
7
|
class Border
|
8
8
|
# A class that represents no border.
|
9
9
|
class Null < Border
|
10
|
-
|
11
10
|
def_border do
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
border_options ? super : nil
|
11
|
+
top EMPTY_CHAR
|
12
|
+
top_mid EMPTY_CHAR
|
13
|
+
top_left EMPTY_CHAR
|
14
|
+
top_right EMPTY_CHAR
|
15
|
+
bottom EMPTY_CHAR
|
16
|
+
bottom_mid EMPTY_CHAR
|
17
|
+
bottom_left EMPTY_CHAR
|
18
|
+
bottom_right EMPTY_CHAR
|
19
|
+
mid EMPTY_CHAR
|
20
|
+
mid_mid EMPTY_CHAR
|
21
|
+
mid_left EMPTY_CHAR
|
22
|
+
mid_right EMPTY_CHAR
|
23
|
+
left EMPTY_CHAR
|
24
|
+
center SPACE_CHAR
|
25
|
+
right EMPTY_CHAR
|
28
26
|
end
|
29
27
|
|
30
|
-
# A stub
|
28
|
+
# A stub middle line
|
31
29
|
#
|
32
30
|
# @api private
|
33
|
-
def
|
34
|
-
border_options ?
|
31
|
+
def middle_line
|
32
|
+
border_options.separator ? "" : super
|
35
33
|
end
|
36
34
|
end # Null
|
37
35
|
end # Border
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module TTY
|
4
4
|
class Table
|
@@ -9,8 +9,9 @@ module TTY
|
|
9
9
|
#
|
10
10
|
# @api public
|
11
11
|
def colorize(border, style)
|
12
|
-
|
13
|
-
self.
|
12
|
+
self.right = border.set_color(style, right)
|
13
|
+
self.center = border.set_color(style, center)
|
14
|
+
self.left = border.set_color(style, left)
|
14
15
|
end
|
15
16
|
end # RowLine
|
16
17
|
end # Border
|
@@ -1,6 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative "../border"
|
4
4
|
|
5
5
|
module TTY
|
6
6
|
class Table
|
@@ -11,21 +11,21 @@ module TTY
|
|
11
11
|
class Unicode < Border
|
12
12
|
|
13
13
|
def_border do
|
14
|
-
top
|
15
|
-
top_mid
|
16
|
-
top_left
|
17
|
-
top_right
|
18
|
-
bottom
|
19
|
-
bottom_mid
|
20
|
-
bottom_left
|
21
|
-
bottom_right
|
22
|
-
mid
|
23
|
-
mid_mid
|
24
|
-
mid_left
|
25
|
-
mid_right
|
26
|
-
left
|
27
|
-
center
|
28
|
-
right
|
14
|
+
top "─"
|
15
|
+
top_mid "┬"
|
16
|
+
top_left "┌"
|
17
|
+
top_right "┐"
|
18
|
+
bottom "─"
|
19
|
+
bottom_mid "┴"
|
20
|
+
bottom_left "└"
|
21
|
+
bottom_right "┘"
|
22
|
+
mid "─"
|
23
|
+
mid_mid "┼"
|
24
|
+
mid_left "├"
|
25
|
+
mid_right "┤"
|
26
|
+
left "│"
|
27
|
+
center "│"
|
28
|
+
right "│"
|
29
29
|
end
|
30
30
|
|
31
31
|
end # Unicode
|
data/lib/tty/table/border_dsl.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
|
3
|
+
require "forwardable"
|
4
|
+
|
5
|
+
require_relative "border_options"
|
5
6
|
|
6
7
|
module TTY
|
7
8
|
class Table
|
@@ -28,15 +29,14 @@ module TTY
|
|
28
29
|
# @return [undefined]
|
29
30
|
#
|
30
31
|
# @api private
|
31
|
-
def initialize(
|
32
|
-
@options = TTY::Table::BorderOptions.
|
33
|
-
@options.characters = characters if characters
|
32
|
+
def initialize(border_opts = nil, &block)
|
33
|
+
@options = TTY::Table::BorderOptions.from(border_opts)
|
34
34
|
yield_or_eval(&block) if block_given?
|
35
35
|
end
|
36
36
|
|
37
37
|
# Apply style color to the border
|
38
38
|
#
|
39
|
-
# @param [Symbol]
|
39
|
+
# @param [Symbol] value
|
40
40
|
# the style color for the border
|
41
41
|
#
|
42
42
|
# @return [undefined]
|
@@ -44,19 +44,22 @@ module TTY
|
|
44
44
|
# @api public
|
45
45
|
def style(value = (not_set = true))
|
46
46
|
return options.style if not_set
|
47
|
+
|
47
48
|
options.style = value
|
48
49
|
end
|
49
50
|
|
50
51
|
# Apply table tuple separator
|
51
52
|
#
|
52
|
-
# @param [Symbol]
|
53
|
+
# @param [Symbol] value
|
53
54
|
# the table tuple separator
|
54
55
|
#
|
55
56
|
# @return [undefined]
|
56
57
|
#
|
57
58
|
# @api public
|
58
|
-
def separator(value)
|
59
|
-
|
59
|
+
def separator(value = (not_set = true))
|
60
|
+
return options.separator if not_set
|
61
|
+
|
62
|
+
options.separator = value
|
60
63
|
end
|
61
64
|
|
62
65
|
# Set top border character
|
@@ -68,7 +71,7 @@ module TTY
|
|
68
71
|
#
|
69
72
|
# @api public
|
70
73
|
def top(value)
|
71
|
-
|
74
|
+
characters["top"] = value
|
72
75
|
end
|
73
76
|
|
74
77
|
# Set top middle border character
|
@@ -80,7 +83,7 @@ module TTY
|
|
80
83
|
#
|
81
84
|
# @api public
|
82
85
|
def top_mid(value)
|
83
|
-
|
86
|
+
characters["top_mid"] = value
|
84
87
|
end
|
85
88
|
|
86
89
|
# Set top left corner border character
|
@@ -92,7 +95,7 @@ module TTY
|
|
92
95
|
#
|
93
96
|
# @api public
|
94
97
|
def top_left(value)
|
95
|
-
|
98
|
+
characters["top_left"] = value
|
96
99
|
end
|
97
100
|
|
98
101
|
# Set top right corner border character
|
@@ -104,7 +107,7 @@ module TTY
|
|
104
107
|
#
|
105
108
|
# @api public
|
106
109
|
def top_right(value)
|
107
|
-
|
110
|
+
characters["top_right"] = value
|
108
111
|
end
|
109
112
|
|
110
113
|
# Set bottom border character
|
@@ -116,7 +119,7 @@ module TTY
|
|
116
119
|
#
|
117
120
|
# @api public
|
118
121
|
def bottom(value)
|
119
|
-
|
122
|
+
characters["bottom"] = value
|
120
123
|
end
|
121
124
|
|
122
125
|
# Set bottom middle border character
|
@@ -128,7 +131,7 @@ module TTY
|
|
128
131
|
#
|
129
132
|
# @api public
|
130
133
|
def bottom_mid(value)
|
131
|
-
|
134
|
+
characters["bottom_mid"] = value
|
132
135
|
end
|
133
136
|
|
134
137
|
# Set bottom left corner border character
|
@@ -140,7 +143,7 @@ module TTY
|
|
140
143
|
#
|
141
144
|
# @api public
|
142
145
|
def bottom_left(value)
|
143
|
-
|
146
|
+
characters["bottom_left"] = value
|
144
147
|
end
|
145
148
|
|
146
149
|
# Set bottom right corner border character
|
@@ -152,7 +155,7 @@ module TTY
|
|
152
155
|
#
|
153
156
|
# @api public
|
154
157
|
def bottom_right(value)
|
155
|
-
|
158
|
+
characters["bottom_right"] = value
|
156
159
|
end
|
157
160
|
|
158
161
|
# Set middle border character
|
@@ -164,7 +167,7 @@ module TTY
|
|
164
167
|
#
|
165
168
|
# @api public
|
166
169
|
def mid(value)
|
167
|
-
|
170
|
+
characters["mid"] = value
|
168
171
|
end
|
169
172
|
|
170
173
|
# Set middle border character
|
@@ -176,7 +179,7 @@ module TTY
|
|
176
179
|
#
|
177
180
|
# @api public
|
178
181
|
def mid_mid(value)
|
179
|
-
|
182
|
+
characters["mid_mid"] = value
|
180
183
|
end
|
181
184
|
|
182
185
|
# Set middle left corner border character
|
@@ -188,7 +191,7 @@ module TTY
|
|
188
191
|
#
|
189
192
|
# @api public
|
190
193
|
def mid_left(value)
|
191
|
-
|
194
|
+
characters["mid_left"] = value
|
192
195
|
end
|
193
196
|
|
194
197
|
# Set middle right corner border character
|
@@ -200,7 +203,7 @@ module TTY
|
|
200
203
|
#
|
201
204
|
# @api public
|
202
205
|
def mid_right(value)
|
203
|
-
|
206
|
+
characters["mid_right"] = value
|
204
207
|
end
|
205
208
|
|
206
209
|
# Set left border character
|
@@ -212,7 +215,7 @@ module TTY
|
|
212
215
|
#
|
213
216
|
# @api public
|
214
217
|
def left(value)
|
215
|
-
|
218
|
+
characters["left"] = value
|
216
219
|
end
|
217
220
|
|
218
221
|
# Set center border character
|
@@ -224,7 +227,7 @@ module TTY
|
|
224
227
|
#
|
225
228
|
# @api public
|
226
229
|
def center(value)
|
227
|
-
|
230
|
+
characters["center"] = value
|
228
231
|
end
|
229
232
|
|
230
233
|
# Set right border character
|
@@ -236,7 +239,7 @@ module TTY
|
|
236
239
|
#
|
237
240
|
# @api public
|
238
241
|
def right(value)
|
239
|
-
|
242
|
+
characters["right"] = value
|
240
243
|
end
|
241
244
|
|
242
245
|
private
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module TTY
|
4
4
|
class Table
|
@@ -7,46 +7,71 @@ module TTY
|
|
7
7
|
# Used internally by {Table::Border} to manage options such as style
|
8
8
|
#
|
9
9
|
# @api private
|
10
|
-
class BorderOptions
|
11
|
-
#
|
10
|
+
class BorderOptions
|
11
|
+
# Create options instance from hash
|
12
12
|
#
|
13
13
|
# @api public
|
14
|
-
def
|
15
|
-
|
16
|
-
|
14
|
+
def self.from(options)
|
15
|
+
return new if options.nil?
|
16
|
+
|
17
|
+
opts = case options
|
18
|
+
when self.class
|
19
|
+
options.to_hash
|
20
|
+
else
|
21
|
+
options
|
22
|
+
end
|
23
|
+
new(**opts)
|
17
24
|
end
|
18
25
|
|
19
|
-
|
26
|
+
attr_accessor :characters
|
27
|
+
|
28
|
+
attr_accessor :separator
|
29
|
+
|
30
|
+
attr_accessor :style
|
31
|
+
|
32
|
+
# Initialize a BorderOptions
|
33
|
+
#
|
34
|
+
# @param [String] style
|
35
|
+
# the style like :red
|
36
|
+
# @param [String] separator
|
37
|
+
# the separator character
|
38
|
+
# @param [Hash] characters
|
39
|
+
# the border characters
|
20
40
|
#
|
21
41
|
# @api public
|
22
|
-
def
|
23
|
-
|
42
|
+
def initialize(characters: {}, separator: nil, style: nil)
|
43
|
+
@characters = characters
|
44
|
+
@separator = separator
|
45
|
+
@style = style
|
24
46
|
end
|
25
47
|
|
26
|
-
#
|
27
|
-
#
|
28
|
-
# @param [Hash, BorderOptions] obj
|
48
|
+
# Convert to hash
|
29
49
|
#
|
30
|
-
# @return [
|
50
|
+
# @return [Hash]
|
31
51
|
#
|
32
52
|
# @api public
|
33
|
-
def
|
34
|
-
|
35
|
-
send("#{key}=", value)
|
36
|
-
end
|
37
|
-
self
|
53
|
+
def to_hash
|
54
|
+
{ characters: characters, separator: separator, style: style }
|
38
55
|
end
|
39
56
|
|
40
|
-
#
|
57
|
+
# Check if there should be a separator AFTER this line
|
58
|
+
#
|
59
|
+
# @param [Integer] line
|
60
|
+
#
|
61
|
+
# @return [Boolean]
|
41
62
|
#
|
42
63
|
# @api public
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
64
|
+
def separator?(line)
|
65
|
+
case separator
|
66
|
+
when TTY::Table::Border::EACH_ROW
|
67
|
+
true
|
68
|
+
when Array
|
69
|
+
separator.include?(line)
|
70
|
+
when Proc
|
71
|
+
separator.call(line)
|
72
|
+
else
|
73
|
+
false
|
48
74
|
end
|
49
|
-
hash
|
50
75
|
end
|
51
76
|
end # BorderOptions
|
52
77
|
end # Table
|