tabelinha 0.1.0 → 0.1.2

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.
@@ -0,0 +1,584 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: Tabelinha
8
+
9
+ &mdash; Documentation by YARD 0.9.34
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Tabelinha";
19
+ relpath = '';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="_index.html">Index (T)</a> &raquo;
40
+
41
+
42
+ <span class="title">Tabelinha</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Module: Tabelinha
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>lib/table.rb</dd>
82
+ </dl>
83
+
84
+ </div>
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+ <h2>
95
+ Class Method Summary
96
+ <small><a href="#" class="summary_toggle">collapse</a></small>
97
+ </h2>
98
+
99
+ <ul class="summary">
100
+
101
+ <li class="public ">
102
+ <span class="summary_signature">
103
+
104
+ <a href="#table-class_method" title="table (class method)">.<strong>table</strong>(rows, options = {}) &#x21d2; Object </a>
105
+
106
+
107
+
108
+ </span>
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+ <span class="summary_desc"><div class='inline'>
119
+ <p>Generates a formatted table with customizable options.</p>
120
+ </div></span>
121
+
122
+ </li>
123
+
124
+
125
+ </ul>
126
+
127
+
128
+
129
+
130
+ <div id="class_method_details" class="method_details_list">
131
+ <h2>Class Method Details</h2>
132
+
133
+
134
+ <div class="method_details first">
135
+ <h3 class="signature first" id="table-class_method">
136
+
137
+ .<strong>table</strong>(rows, options = {}) &#x21d2; <tt>Object</tt>
138
+
139
+
140
+
141
+
142
+
143
+ </h3><div class="docstring">
144
+ <div class="discussion">
145
+
146
+ <p>Generates a formatted table with customizable options.</p>
147
+
148
+ <p>This method generates a formatted table with the specified rows and options. It supports various formatting elements to provide flexibility in table appearance.</p>
149
+
150
+
151
+ </div>
152
+ </div>
153
+ <div class="tags">
154
+
155
+ <div class="examples">
156
+ <p class="tag_title">Examples:</p>
157
+
158
+
159
+ <pre class="example code"><code><span class='id identifier rubyid_rows'>rows</span> <span class='op'>=</span> <span class='lbracket'>[</span>
160
+ <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Header 1</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Header 2</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Header 3</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='comma'>,</span>
161
+ <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Value 1</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Value 2</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Value 3</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span><span class='comma'>,</span>
162
+ <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Another Value 1</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Another Value 2</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Another Value 3</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span>
163
+ <span class='rbracket'>]</span>
164
+
165
+ <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span>
166
+ <span class='label'>space_linebroken:</span> <span class='kw'>true</span><span class='comma'>,</span>
167
+ <span class='label'>padding:</span> <span class='int'>1</span><span class='comma'>,</span>
168
+ <span class='label'>max_width:</span> <span class='int'>80</span><span class='comma'>,</span>
169
+ <span class='label'>corners:</span> <span class='lbrace'>{</span> <span class='label'>top_right:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┌</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>top_left:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┐</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>bottom_right:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>└</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>bottom_left:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┘</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
170
+ <span class='label'>straight:</span> <span class='lbrace'>{</span> <span class='label'>vertical:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>│</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>horizontal:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>─</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span><span class='comma'>,</span>
171
+ <span class='label'>junctions:</span> <span class='lbrace'>{</span> <span class='label'>top:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┬</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>middle:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┼</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span> <span class='label'>bottom:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┴</span><span class='tstring_end'>&#39;</span></span> <span class='rbrace'>}</span>
172
+ <span class='rbrace'>}</span>
173
+
174
+ <span class='id identifier rubyid_table'>table</span><span class='lparen'>(</span><span class='id identifier rubyid_rows'>rows</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span></code></pre>
175
+
176
+ </div>
177
+ <p class="tag_title">Parameters:</p>
178
+ <ul class="param">
179
+
180
+ <li>
181
+
182
+ <span class='name'>rows</span>
183
+
184
+
185
+ <span class='type'>(<tt>Array&lt;Array&lt;String&gt;&gt;</tt>)</span>
186
+
187
+
188
+
189
+ &mdash;
190
+ <div class='inline'>
191
+ <p>An array of rows, where each row is an array of cells to be displayed in the table.</p>
192
+ </div>
193
+
194
+ </li>
195
+
196
+ <li>
197
+
198
+ <span class='name'>options</span>
199
+
200
+
201
+ <span class='type'>(<tt>Hash</tt>)</span>
202
+
203
+
204
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
205
+
206
+
207
+ &mdash;
208
+ <div class='inline'>
209
+ <p>An optional hash of configuration options to customize the appearance of the table.</p>
210
+ </div>
211
+
212
+ </li>
213
+
214
+ </ul>
215
+
216
+
217
+
218
+
219
+
220
+
221
+ <p class="tag_title">Options Hash (<tt>options</tt>):</p>
222
+ <ul class="option">
223
+
224
+ <li>
225
+ <span class="name">:space_linebroken</span>
226
+ <span class="type">(<tt>Boolean</tt>)</span>
227
+ <span class="default">
228
+
229
+ &mdash; default:
230
+ <tt>true</tt>
231
+
232
+ </span>
233
+
234
+ &mdash; <div class='inline'>
235
+ <p>If true, adds extra space between rows with line breaks.</p>
236
+ </div>
237
+
238
+ </li>
239
+
240
+ <li>
241
+ <span class="name">:padding</span>
242
+ <span class="type">(<tt>Integer</tt>)</span>
243
+ <span class="default">
244
+
245
+ &mdash; default:
246
+ <tt>1</tt>
247
+
248
+ </span>
249
+
250
+ &mdash; <div class='inline'>
251
+ <p>The number of spaces padding each cell.</p>
252
+ </div>
253
+
254
+ </li>
255
+
256
+ <li>
257
+ <span class="name">:max_width</span>
258
+ <span class="type">(<tt>Float</tt>)</span>
259
+ <span class="default">
260
+
261
+ &mdash; default:
262
+ <tt>Float::INFINITY</tt>
263
+
264
+ </span>
265
+
266
+ &mdash; <div class='inline'>
267
+ <p>The maximum width of the table.</p>
268
+ </div>
269
+
270
+ </li>
271
+
272
+ <li>
273
+ <span class="name">:corners</span>
274
+ <span class="type">(<tt>Hash</tt>)</span>
275
+ <span class="default">
276
+
277
+ </span>
278
+
279
+ &mdash; <div class='inline'>
280
+ <p>Hash containing characters for table corners. @option options [String] :top_right (‘┌’) Character for the top-right corner. @option options [String] :top_left (‘┐’) Character for the top-left corner. @option options [String] :bottom_right (‘└’) Character for the bottom-right corner. @option options [String] :bottom_left (‘┘’) Character for the bottom-left corner.</p>
281
+ </div>
282
+
283
+ </li>
284
+
285
+ <li>
286
+ <span class="name">:straight</span>
287
+ <span class="type">(<tt>Hash</tt>)</span>
288
+ <span class="default">
289
+
290
+ </span>
291
+
292
+ &mdash; <div class='inline'>
293
+ <p>Hash containing characters for straight lines. @option options [String] :vertical (‘│’) Character for vertical lines. @option options [String] :horizontal (‘─’) Character for horizontal lines.</p>
294
+ </div>
295
+
296
+ </li>
297
+
298
+ <li>
299
+ <span class="name">:junctions</span>
300
+ <span class="type">(<tt>Hash</tt>)</span>
301
+ <span class="default">
302
+
303
+ </span>
304
+
305
+ &mdash; <div class='inline'>
306
+ <p>Hash containing characters for junctions. @option options [String] :top (‘┬’) Character for the top junction. @option options [String] :middle (‘┼’) Character for the middle junction. @option options [String] :bottom (‘┴’) Character for the bottom junction.</p>
307
+ </div>
308
+
309
+ </li>
310
+
311
+ </ul>
312
+
313
+
314
+
315
+ </div><table class="source_code">
316
+ <tr>
317
+ <td>
318
+ <pre class="lines">
319
+
320
+
321
+ 45
322
+ 46
323
+ 47
324
+ 48
325
+ 49
326
+ 50
327
+ 51
328
+ 52
329
+ 53
330
+ 54
331
+ 55
332
+ 56
333
+ 57
334
+ 58
335
+ 59
336
+ 60
337
+ 61
338
+ 62
339
+ 63
340
+ 64
341
+ 65
342
+ 66
343
+ 67
344
+ 68
345
+ 69
346
+ 70
347
+ 71
348
+ 72
349
+ 73
350
+ 74
351
+ 75
352
+ 76
353
+ 77
354
+ 78
355
+ 79
356
+ 80
357
+ 81
358
+ 82
359
+ 83
360
+ 84
361
+ 85
362
+ 86
363
+ 87
364
+ 88
365
+ 89
366
+ 90
367
+ 91
368
+ 92
369
+ 93
370
+ 94
371
+ 95
372
+ 96
373
+ 97
374
+ 98
375
+ 99
376
+ 100
377
+ 101
378
+ 102
379
+ 103
380
+ 104
381
+ 105
382
+ 106
383
+ 107
384
+ 108
385
+ 109
386
+ 110
387
+ 111
388
+ 112
389
+ 113
390
+ 114
391
+ 115
392
+ 116
393
+ 117
394
+ 118
395
+ 119
396
+ 120
397
+ 121
398
+ 122
399
+ 123
400
+ 124
401
+ 125
402
+ 126
403
+ 127
404
+ 128
405
+ 129
406
+ 130
407
+ 131
408
+ 132
409
+ 133
410
+ 134
411
+ 135
412
+ 136
413
+ 137
414
+ 138
415
+ 139
416
+ 140
417
+ 141
418
+ 142
419
+ 143
420
+ 144
421
+ 145
422
+ 146
423
+ 147
424
+ 148
425
+ 149
426
+ 150
427
+ 151
428
+ 152
429
+ 153
430
+ 154
431
+ 155
432
+ 156
433
+ 157
434
+ 158
435
+ 159
436
+ 160
437
+ 161
438
+ 162
439
+ 163
440
+ 164
441
+ 165</pre>
442
+ </td>
443
+ <td>
444
+ <pre class="code"><span class="info file"># File 'lib/table.rb', line 45</span>
445
+
446
+ <span class='kw'>def</span> <span class='id identifier rubyid_table'>table</span><span class='lparen'>(</span><span class='id identifier rubyid_rows'>rows</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
447
+ <span class='comment'># sets options
448
+ </span>
449
+ <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span>
450
+ <span class='label'>space_linebroken:</span> <span class='kw'>true</span><span class='comma'>,</span>
451
+ <span class='label'>padding:</span> <span class='int'>1</span><span class='comma'>,</span>
452
+ <span class='label'>max_width:</span> <span class='const'>Float</span><span class='op'>::</span><span class='const'>INFINITY</span><span class='comma'>,</span>
453
+ <span class='label'>corners:</span> <span class='lbrace'>{</span>
454
+ <span class='label'>top_right:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┌</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
455
+ <span class='label'>top_left:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┐</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
456
+ <span class='label'>bottom_right:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>└</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
457
+ <span class='label'>bottom_left:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┘</span><span class='tstring_end'>&#39;</span></span>
458
+ <span class='rbrace'>}</span><span class='comma'>,</span>
459
+ <span class='label'>straight:</span> <span class='lbrace'>{</span>
460
+ <span class='label'>vertical:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>│</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
461
+ <span class='label'>horizontal:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>─</span><span class='tstring_end'>&#39;</span></span>
462
+ <span class='rbrace'>}</span><span class='comma'>,</span>
463
+ <span class='label'>junctions:</span> <span class='lbrace'>{</span>
464
+ <span class='label'>top:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┬</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
465
+ <span class='label'>middle:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┼</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
466
+ <span class='label'>bottom:</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>┴</span><span class='tstring_end'>&#39;</span></span>
467
+ <span class='rbrace'>}</span>
468
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
469
+
470
+ <span class='id identifier rubyid_padding_amount'>padding_amount</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:padding</span><span class='rbracket'>]</span>
471
+ <span class='id identifier rubyid_padding'>padding</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span> <span class='op'>*</span> <span class='id identifier rubyid_padding_amount'>padding_amount</span>
472
+
473
+ <span class='comment'># split \n and normalize rows
474
+ </span>
475
+ <span class='id identifier rubyid_newline_treated_rows'>newline_treated_rows</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
476
+
477
+ <span class='id identifier rubyid_rows'>rows</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_row'>row</span><span class='op'>|</span>
478
+ <span class='id identifier rubyid_max_size'>max_size</span> <span class='op'>=</span> <span class='int'>0</span>
479
+ <span class='id identifier rubyid_split_row'>split_row</span> <span class='op'>=</span> <span class='id identifier rubyid_row'>row</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_cell'>cell</span><span class='op'>|</span>
480
+ <span class='id identifier rubyid_split_cells'>split_cells</span> <span class='op'>=</span> <span class='id identifier rubyid_cell'>cell</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
481
+ <span class='id identifier rubyid_max_size'>max_size</span> <span class='op'>=</span> <span class='id identifier rubyid_split_cells'>split_cells</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='kw'>if</span> <span class='id identifier rubyid_split_cells'>split_cells</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_max_size'>max_size</span>
482
+ <span class='id identifier rubyid_split_cells'>split_cells</span>
483
+ <span class='kw'>end</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_split_cells'>split_cells</span><span class='op'>|</span>
484
+ <span class='id identifier rubyid_split_cells'>split_cells</span> <span class='op'>+=</span> <span class='const'>Array</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_max_size'>max_size</span> <span class='op'>-</span> <span class='id identifier rubyid_split_cells'>split_cells</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
485
+ <span class='kw'>end</span><span class='period'>.</span><span class='id identifier rubyid_transpose'>transpose</span>
486
+
487
+ <span class='id identifier rubyid_newline_treated_rows'>newline_treated_rows</span> <span class='op'>+=</span> <span class='id identifier rubyid_split_row'>split_row</span>
488
+ <span class='kw'>if</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:space_linebroken</span><span class='rbracket'>]</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_split_row'>split_row</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&gt;</span> <span class='int'>1</span>
489
+ <span class='id identifier rubyid_newline_treated_rows'>newline_treated_rows</span> <span class='op'>&lt;&lt;</span> <span class='const'>Array</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_split_row'>split_row</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='comma'>,</span>
490
+ <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
491
+ <span class='kw'>end</span>
492
+ <span class='kw'>end</span>
493
+
494
+ <span class='id identifier rubyid_rows'>rows</span> <span class='op'>=</span> <span class='id identifier rubyid_newline_treated_rows'>newline_treated_rows</span>
495
+
496
+ <span class='comment'># set widths for each column to be printed, fitting terminal size
497
+ </span>
498
+ <span class='id identifier rubyid_columns'>columns</span> <span class='op'>=</span> <span class='id identifier rubyid_rows'>rows</span><span class='period'>.</span><span class='id identifier rubyid_transpose'>transpose</span>
499
+
500
+ <span class='id identifier rubyid_total_column_width'>total_column_width</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:max_width</span><span class='rbracket'>]</span> <span class='op'>-</span> <span class='id identifier rubyid_columns'>columns</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>-</span> <span class='int'>1</span>
501
+ <span class='id identifier rubyid_current_column_widths'>current_column_widths</span> <span class='op'>=</span> <span class='id identifier rubyid_columns'>columns</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_column'>column</span><span class='op'>|</span> <span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_cell'>cell</span><span class='op'>|</span> <span class='id identifier rubyid_cell'>cell</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\e\[([;\d]+)?m</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span> <span class='rbrace'>}</span>
502
+
503
+ <span class='id identifier rubyid_actual_column_widths'>actual_column_widths</span> <span class='op'>=</span> <span class='id identifier rubyid_current_column_widths'>current_column_widths</span>
504
+ <span class='kw'>if</span> <span class='id identifier rubyid_current_column_widths'>current_column_widths</span><span class='period'>.</span><span class='id identifier rubyid_sum'>sum</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_total_column_width'>total_column_width</span>
505
+ <span class='id identifier rubyid_even_width_per_column'>even_width_per_column</span> <span class='op'>=</span> <span class='id identifier rubyid_total_column_width'>total_column_width</span> <span class='op'>/</span> <span class='id identifier rubyid_columns'>columns</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
506
+ <span class='id identifier rubyid_even_width_per_column'>even_width_per_column</span> <span class='op'>=</span> <span class='int'>1</span> <span class='kw'>if</span> <span class='id identifier rubyid_even_width_per_column'>even_width_per_column</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
507
+
508
+ <span class='id identifier rubyid_width_for_linebroken'>width_for_linebroken</span> <span class='op'>=</span> <span class='id identifier rubyid_total_column_width'>total_column_width</span> <span class='op'>-</span> <span class='id identifier rubyid_actual_column_widths'>actual_column_widths</span><span class='period'>.</span><span class='id identifier rubyid_select'>select</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_n'>n</span> <span class='op'>&lt;</span> <span class='id identifier rubyid_even_width_per_column'>even_width_per_column</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_sum'>sum</span>
509
+
510
+ <span class='id identifier rubyid_actual_column_widths'>actual_column_widths</span> <span class='op'>=</span> <span class='id identifier rubyid_current_column_widths'>current_column_widths</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_width'>width</span><span class='op'>|</span>
511
+ <span class='id identifier rubyid_width'>width</span> <span class='op'>&gt;</span> <span class='id identifier rubyid_even_width_per_column'>even_width_per_column</span> <span class='op'>?</span> <span class='id identifier rubyid_even_width_per_column'>even_width_per_column</span> <span class='op'>:</span> <span class='id identifier rubyid_width'>width</span>
512
+ <span class='kw'>end</span>
513
+ <span class='kw'>end</span>
514
+
515
+ <span class='comment'># write the top of the table
516
+ </span>
517
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
518
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:corners</span><span class='comma'>,</span> <span class='symbol'>:top_right</span><span class='rparen'>)</span>
519
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_actual_column_widths'>actual_column_widths</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_width'>width</span><span class='op'>|</span>
520
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
521
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:straight</span><span class='comma'>,</span> <span class='symbol'>:horizontal</span><span class='rparen'>)</span> <span class='op'>*</span> <span class='id identifier rubyid_width'>width</span>
522
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:straight</span><span class='comma'>,</span> <span class='symbol'>:horizontal</span><span class='rparen'>)</span> <span class='op'>*</span> <span class='id identifier rubyid_padding_amount'>padding_amount</span> <span class='op'>*</span> <span class='int'>2</span>
523
+ <span class='kw'>end</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:junctions</span><span class='comma'>,</span> <span class='symbol'>:top</span><span class='rparen'>)</span><span class='rparen'>)</span>
524
+
525
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:corners</span><span class='comma'>,</span> <span class='symbol'>:top_left</span><span class='rparen'>)</span>
526
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span>
527
+
528
+ <span class='comment'># write the contents of the table(breaks lines if needed)
529
+ </span>
530
+ <span class='id identifier rubyid_rows'>rows</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_row'>row</span><span class='op'>|</span>
531
+ <span class='id identifier rubyid_stripped_columns'>stripped_columns</span> <span class='op'>=</span> <span class='id identifier rubyid_row'>row</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='period'>.</span><span class='id identifier rubyid_with_index'>with_index</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_cell'>cell</span><span class='comma'>,</span> <span class='id identifier rubyid_column_i'>column_i</span><span class='op'>|</span>
532
+ <span class='id identifier rubyid_width'>width</span> <span class='op'>=</span> <span class='id identifier rubyid_actual_column_widths'>actual_column_widths</span><span class='lbracket'>[</span><span class='id identifier rubyid_column_i'>column_i</span><span class='rbracket'>]</span>
533
+ <span class='id identifier rubyid_cell'>cell</span><span class='period'>.</span><span class='id identifier rubyid_chars'>chars</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='op'>|</span> <span class='rbrace'>}</span>
534
+ <span class='id identifier rubyid_no_ansi'>no_ansi</span> <span class='op'>=</span> <span class='id identifier rubyid_cell'>cell</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\e\[([;\d]+)?m</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span>
535
+
536
+ <span class='id identifier rubyid_divide_cell'>divide_cell</span><span class='lparen'>(</span><span class='id identifier rubyid_cell'>cell</span><span class='comma'>,</span> <span class='id identifier rubyid_width'>width</span><span class='rparen'>)</span>
537
+ <span class='kw'>end</span>
538
+
539
+ <span class='id identifier rubyid_height'>height</span> <span class='op'>=</span> <span class='id identifier rubyid_stripped_columns'>stripped_columns</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:length</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_max'>max</span>
540
+ <span class='id identifier rubyid_height'>height</span> <span class='op'>+=</span> <span class='int'>1</span> <span class='kw'>if</span> <span class='id identifier rubyid_height'>height</span> <span class='op'>&gt;</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:space_linebroken</span><span class='rbracket'>]</span>
541
+ <span class='id identifier rubyid_new_columns'>new_columns</span> <span class='op'>=</span> <span class='id identifier rubyid_stripped_columns'>stripped_columns</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='period'>.</span><span class='id identifier rubyid_with_index'>with_index</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_column'>column</span><span class='comma'>,</span> <span class='id identifier rubyid_column_i'>column_i</span><span class='op'>|</span>
542
+ <span class='id identifier rubyid_width'>width</span> <span class='op'>=</span> <span class='id identifier rubyid_actual_column_widths'>actual_column_widths</span><span class='lbracket'>[</span><span class='id identifier rubyid_column_i'>column_i</span><span class='rbracket'>]</span>
543
+ <span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_fill'>fill</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> </span><span class='tstring_end'>&#39;</span></span> <span class='op'>*</span> <span class='id identifier rubyid_width'>width</span><span class='comma'>,</span> <span class='id identifier rubyid_column'>column</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>..</span><span class='lparen'>(</span><span class='id identifier rubyid_height'>height</span> <span class='op'>-</span> <span class='int'>1</span><span class='rparen'>)</span><span class='rparen'>)</span>
544
+ <span class='id identifier rubyid_column'>column</span>
545
+ <span class='kw'>end</span>
546
+
547
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_new_columns'>new_columns</span><span class='period'>.</span><span class='id identifier rubyid_transpose'>transpose</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_row'>row</span><span class='op'>|</span>
548
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
549
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:straight</span><span class='comma'>,</span> <span class='symbol'>:vertical</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_padding'>padding</span>
550
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_row'>row</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_padding'>padding</span> <span class='op'>+</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:straight</span><span class='comma'>,</span> <span class='symbol'>:vertical</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='id identifier rubyid_padding'>padding</span><span class='rparen'>)</span>
551
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_padding'>padding</span> <span class='op'>+</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:straight</span><span class='comma'>,</span> <span class='symbol'>:vertical</span><span class='rparen'>)</span>
552
+ <span class='kw'>end</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
553
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span>
554
+ <span class='kw'>end</span>
555
+
556
+ <span class='comment'># writes the bottom of the table
557
+ </span>
558
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:corners</span><span class='comma'>,</span> <span class='symbol'>:bottom_right</span><span class='rparen'>)</span>
559
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_actual_column_widths'>actual_column_widths</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_width'>width</span><span class='op'>|</span>
560
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_end'>&#39;</span></span>
561
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:straight</span><span class='comma'>,</span> <span class='symbol'>:horizontal</span><span class='rparen'>)</span> <span class='op'>*</span> <span class='id identifier rubyid_width'>width</span>
562
+ <span class='id identifier rubyid_str'>str</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:straight</span><span class='comma'>,</span> <span class='symbol'>:horizontal</span><span class='rparen'>)</span> <span class='op'>*</span> <span class='id identifier rubyid_padding_amount'>padding_amount</span> <span class='op'>*</span> <span class='int'>2</span>
563
+ <span class='kw'>end</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:junctions</span><span class='comma'>,</span> <span class='symbol'>:bottom</span><span class='rparen'>)</span><span class='rparen'>)</span>
564
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_dig'>dig</span><span class='lparen'>(</span><span class='symbol'>:corners</span><span class='comma'>,</span> <span class='symbol'>:bottom_left</span><span class='rparen'>)</span>
565
+ <span class='id identifier rubyid_table'>table</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span>
566
+ <span class='kw'>end</span></pre>
567
+ </td>
568
+ </tr>
569
+ </table>
570
+ </div>
571
+
572
+ </div>
573
+
574
+ </div>
575
+
576
+ <div id="footer">
577
+ Generated on Mon Oct 9 00:06:08 2023 by
578
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
579
+ 0.9.34 (ruby-3.2.2).
580
+ </div>
581
+
582
+ </div>
583
+ </body>
584
+ </html>