table-formatter 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/table-formatter.rb +65 -62
- data.tar.gz.sig +0 -0
- metadata +27 -26
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7e3972d61d31bb0e5f4a8530f98bf4a76f8000985e0fddc646d200df5c3bd8c
|
4
|
+
data.tar.gz: c12315a1c23b7900bfa0afc3150948cccd7072c50643d2089ca156d5f9a52937
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecb25c9968b96b7d472bae86d05aac743756ad20f974b70732fb672cc3430a7102b9535ebecda1f21740a69dc0ad736596e25afa4eb1eb8a7e79bd1649392efc
|
7
|
+
data.tar.gz: 4215518c58acfe6e2513b30cfc65fa4b3090ef38f8b17e2e78bbebf9b386665cde4d8eee424abd877697eff7e529456f94b1617a88aee65736428d154e3426a3
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/table-formatter.rb
CHANGED
@@ -9,8 +9,8 @@ class TableFormatter
|
|
9
9
|
using ColouredText
|
10
10
|
|
11
11
|
attr_accessor :source, :labels, :border, :divider, :markdown, :col_justify
|
12
|
-
|
13
|
-
def initialize(source: nil, labels: nil, border: true, wrap: true,
|
12
|
+
|
13
|
+
def initialize(source: nil, labels: nil, border: true, wrap: true,
|
14
14
|
divider: nil, markdown: false, innermarkdown: false, debug: false)
|
15
15
|
|
16
16
|
super()
|
@@ -23,15 +23,15 @@ class TableFormatter
|
|
23
23
|
@markdown = markdown
|
24
24
|
@innermarkdown = innermarkdown
|
25
25
|
@debug = debug
|
26
|
-
|
26
|
+
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def justify(s, ajust)
|
30
|
-
|
30
|
+
|
31
31
|
a = s.split('|')
|
32
|
-
|
32
|
+
|
33
33
|
a2 = ajust.map.with_index do |x,i|
|
34
|
-
|
34
|
+
|
35
35
|
s = a[i+1]
|
36
36
|
|
37
37
|
case x
|
@@ -44,15 +44,15 @@ class TableFormatter
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
"|%s|\n" % a2.join('|')
|
47
|
+
"|%s|\n" % a2.join('|')
|
48
48
|
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
def display(width=nil, widths: nil, markdown: @markdown)
|
52
|
-
|
52
|
+
|
53
53
|
@align_cols = []
|
54
54
|
@labels ||= [''] * @source.first.length
|
55
|
-
|
55
|
+
|
56
56
|
if @labels then
|
57
57
|
|
58
58
|
labels = []
|
@@ -69,7 +69,7 @@ class TableFormatter
|
|
69
69
|
{ljust: :l, rjust: :r, center: :c}[col]
|
70
70
|
end
|
71
71
|
|
72
|
-
return display_markdown(@source, labels) if markdown
|
72
|
+
return display_markdown(@source, labels) if markdown
|
73
73
|
|
74
74
|
#width ||= @maxwidth
|
75
75
|
@width = width
|
@@ -86,7 +86,7 @@ class TableFormatter
|
|
86
86
|
|
87
87
|
div = (border == true ? '-' : '') * records[0].length + "\n"
|
88
88
|
label_buffer = ''
|
89
|
-
|
89
|
+
|
90
90
|
label_buffer = format_cols(labels, column_widths) + "\n" + div if labels
|
91
91
|
|
92
92
|
div + label_buffer + records.join("\n") + "\n" + div
|
@@ -97,35 +97,35 @@ class TableFormatter
|
|
97
97
|
|
98
98
|
|
99
99
|
private
|
100
|
-
|
101
|
-
def display_markdown(a, fields)
|
102
|
-
|
100
|
+
|
101
|
+
def display_markdown(a, fields)
|
102
|
+
|
103
103
|
print_row = -> (row, widths) do
|
104
104
|
'| ' + row.map\
|
105
105
|
.with_index {|y,i| y.to_s.ljust(widths[i])}.join(' | ') + " |\n"
|
106
|
-
end
|
106
|
+
end
|
107
107
|
|
108
108
|
print_thline = -> (row, widths) do
|
109
109
|
'|:' + row.map\
|
110
110
|
.with_index {|y,i| y.to_s.ljust(widths[i])}.join('|:') + "|\n"
|
111
111
|
end
|
112
|
-
|
112
|
+
|
113
113
|
if @debug then
|
114
|
-
|
114
|
+
|
115
115
|
puts '@labels: ' + @labels.inspect
|
116
116
|
puts 'thline: ' + print_thline.inspect
|
117
|
-
|
117
|
+
|
118
118
|
end
|
119
|
-
|
119
|
+
|
120
120
|
print_rows = -> (rows, widths) do
|
121
121
|
rows.map {|x| print_row.call(x,widths)}.join
|
122
122
|
end
|
123
123
|
|
124
|
-
|
124
|
+
|
125
125
|
raw_vals = a
|
126
126
|
|
127
127
|
# create Markdown hyperlinks for any URLs
|
128
|
-
|
128
|
+
|
129
129
|
vals = raw_vals.map do |row|
|
130
130
|
|
131
131
|
row.map do |col|
|
@@ -141,49 +141,49 @@ class TableFormatter
|
|
141
141
|
url_title = (a.join('.') + path)[0..39] + '...'
|
142
142
|
|
143
143
|
"[%s](%s)" % [url_title, col]
|
144
|
-
|
144
|
+
|
145
145
|
else
|
146
|
-
|
147
|
-
if @innermarkdown then
|
148
|
-
"{::nomarkdown}" +
|
146
|
+
|
147
|
+
if @innermarkdown then
|
148
|
+
"{::nomarkdown}" +
|
149
149
|
RDiscount.new(col).to_html.strip.gsub("\n",'') + "{:/}"
|
150
150
|
else
|
151
151
|
|
152
152
|
col
|
153
|
-
|
153
|
+
|
154
154
|
end
|
155
|
-
|
155
|
+
|
156
156
|
end
|
157
|
-
|
157
|
+
|
158
158
|
r
|
159
159
|
end
|
160
|
-
end
|
160
|
+
end
|
161
161
|
|
162
162
|
puts ('fields: ' + fields.inspect).debug if @debug
|
163
163
|
if fields then
|
164
|
-
widths = ([(fields + ['']).take(a.first.length)] +
|
164
|
+
widths = ([(fields + ['']).take(a.first.length)] +
|
165
165
|
vals).transpose.map{|x| x.max_by(&:length).length}
|
166
166
|
end
|
167
167
|
|
168
|
-
th = if @labels.map(&:strip).join.length > 0 then
|
168
|
+
th = if @labels.map(&:strip).join.length > 0 then
|
169
169
|
print_row.call(fields, widths)
|
170
170
|
else
|
171
171
|
''
|
172
172
|
end
|
173
|
-
|
174
|
-
th_line = print_thline.call widths.map {|x| '-' * (x+1)}, widths
|
175
|
-
tb = print_rows.call(vals, widths)
|
176
|
-
th_line2 = justify(th_line, @col_justify)
|
177
|
-
|
178
|
-
table = th + th_line2 + tb
|
173
|
+
|
174
|
+
th_line = print_thline.call widths.map {|x| '-' * (x+1)}, widths
|
175
|
+
tb = print_rows.call(vals, widths)
|
176
|
+
th_line2 = justify(th_line, @col_justify)
|
177
|
+
|
178
|
+
table = th + th_line2 + tb
|
179
179
|
end
|
180
180
|
|
181
181
|
def display_markdown2(a, fields)
|
182
|
-
|
182
|
+
|
183
183
|
print_row = -> (row, widths) do
|
184
|
-
|
185
|
-
'| ' + row.map.with_index do |y,i|
|
186
|
-
align = @align_cols ? @align_cols[i] : :ljust
|
184
|
+
|
185
|
+
'| ' + row.map.with_index do |y,i|
|
186
|
+
align = @align_cols ? @align_cols[i] : :ljust
|
187
187
|
y.to_s.method(align).call(widths[i])
|
188
188
|
end.join(' | ') + " |\n"
|
189
189
|
end
|
@@ -207,9 +207,9 @@ class TableFormatter
|
|
207
207
|
tb = print_rows.call(a, widths)
|
208
208
|
table = th + th_line2 + tb
|
209
209
|
end
|
210
|
-
|
210
|
+
|
211
211
|
def fetch_column_widths(a)
|
212
|
-
|
212
|
+
|
213
213
|
puts 'a: ' + a.inspect if @debug
|
214
214
|
d = tabulate(a).map &:flatten
|
215
215
|
puts 'd: ' + d.inspect if @debug
|
@@ -217,16 +217,18 @@ class TableFormatter
|
|
217
217
|
d.map{|x| x.max_by(&:length).length}
|
218
218
|
|
219
219
|
end
|
220
|
-
|
220
|
+
|
221
221
|
def format_cols(row, col_widths, bar='')
|
222
222
|
|
223
|
-
outer_bar
|
224
|
-
|
223
|
+
outer_bar = ''
|
224
|
+
inner_spacer = border ? ' ' : ''
|
225
|
+
outer_bar = border ? '|' : ''
|
226
|
+
#(outer_bar = bar = '|'; inner_spacer = ' ') if border == true
|
225
227
|
col_spacer = @divider ? 0 : 2
|
226
|
-
|
228
|
+
|
227
229
|
buffer = outer_bar
|
228
230
|
|
229
|
-
|
231
|
+
|
230
232
|
row.each_with_index do |col, i|
|
231
233
|
|
232
234
|
align = @align_cols.any? ? @align_cols[i] : :ljust
|
@@ -238,45 +240,46 @@ class TableFormatter
|
|
238
240
|
end
|
239
241
|
|
240
242
|
buffer += inner_spacer + val + next_bar.to_s
|
241
|
-
|
242
|
-
|
243
|
+
puts 'buffer: ' + buffer.inspect if @debug
|
244
|
+
end
|
245
|
+
|
243
246
|
buffer
|
244
247
|
|
245
|
-
end
|
248
|
+
end
|
246
249
|
|
247
250
|
def format_rows(raw_a, col_widths)
|
248
251
|
|
249
252
|
@width = col_widths.inject(&:+)
|
250
253
|
|
251
254
|
col_widths[-1] -= col_widths.inject(&:+) - @maxwidth if @width > @maxwidth
|
252
|
-
|
255
|
+
|
253
256
|
a = if @wrap == true then
|
254
|
-
|
257
|
+
|
255
258
|
raw_a.map do |raw_row|
|
256
259
|
|
257
260
|
rowx = raw_row.map.with_index do |col, i|
|
258
261
|
col.chars.each_slice(col_widths[i]).map(&:join)
|
259
|
-
end
|
260
|
-
|
262
|
+
end
|
263
|
+
|
261
264
|
max_len = rowx.max_by {|x| x.length}.length
|
262
|
-
|
263
|
-
rowx.each do |x|
|
265
|
+
|
266
|
+
rowx.each do |x|
|
264
267
|
len = x.length
|
265
268
|
x.concat ([''] * (max_len - len)) if len < max_len
|
266
269
|
end
|
267
|
-
|
270
|
+
|
268
271
|
rowx.transpose
|
269
272
|
end.flatten(1)
|
270
273
|
else
|
271
274
|
raw_a
|
272
275
|
end
|
273
|
-
|
276
|
+
|
274
277
|
a.map {|row| format_cols(row, col_widths, divider) }
|
275
278
|
|
276
279
|
end
|
277
280
|
|
278
281
|
def just(x)
|
279
|
-
|
282
|
+
|
280
283
|
case x
|
281
284
|
when /^:.*:$/
|
282
285
|
[:center, x[1..-2]]
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: table-formatter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,31 +11,31 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwMjAxMjM1MTM1WhcN
|
15
|
+
MjMwMjAxMjM1MTM1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDRoaWP
|
17
|
+
0NrTIlcCA5Q2IJ79w1bSxVb05eCW8tTxnwXR7fuTEzmDsItLuc315nDK6KxzuoEb
|
18
|
+
qS3vcpHRufLTCg75pNIDA8OERS7yYlruoES5yejWeIBc/pFheNOSipzeycSYKhpD
|
19
|
+
6boMU8RUZKUa82cxqOl+Ixqt5LROC2QCdF6MPOP9naTPDoyqdo3+D0gXs90Ubx4A
|
20
|
+
QkQxInLt2dcE/LjbIUGhpoSgEm7DljXM/ylKJuP8VT8Y6OOdIR4C3IE65boyZqoT
|
21
|
+
e0ir5FbS3wu2WwEm2XVtMjOrIqL8kWptevf8jw2NEwnwzkoJT7QVoOYwKPK1cFT3
|
22
|
+
9mHmssU7FZJuqozDFfd2C71aVg+gR8uK0yvSz9WYuPQaHJp9F8BhVtQxMhjtQbe4
|
23
|
+
f7YEX8jF7t53jvr5TczqvCn/E+IwAZc9kKJJ2ChrTyAZkDKkXwXNCezDLLV2Hhos
|
24
|
+
SUrpdHzbEJBFRkcbn83XiDd/WvCSKr6Gn+HQYce9TqP5BrSaNqMu71Bqn6ECAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUCp9H2cjN
|
26
|
+
7dFxm9LZ1h0eSifIogIwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEArEvFpox3voeTOscJ9T02WzrSojgiLGuSp3SKgtXP
|
29
|
+
Kflf5O9a0epZ0FuFqDBk/uZma75LYmtjKsreZvyV5jrVJfBdkoPtAchxMA40kGJ3
|
30
|
+
yUoNTYUgts4mzW9qpCEtiEpGhKCobTSBPrhWtVe763p3NlcWRBx576RWJzCKTQmj
|
31
|
+
HwqpV7NqliEJMyrntCbPGzJ9xkLt9est6N1BZvjUvWxW51/qZk8lvcyrbYUdeorr
|
32
|
+
nZZZo4Tie4hpHvjlAc0j0gbLrjIi7RrZU6qVzYwAm/kbe0GcssatoUGXJt5Xc7PP
|
33
|
+
S35fv/YUDZBVcNxhMXRlxrwt3HQOWTJ4OgPbmUy3mECUiwS4zmd6gMBB4fnHu8Co
|
34
|
+
TtQHVdjMbM3o4LP7R8QX2j3EnNZujKWpnDV+rD584HGXY9KQJkyf3t/lhNFHrK+c
|
35
|
+
l3i5J/pMO13Qwr0Pdbd4P0pc/8KEBKZelhuzCHkpFbe0QjLtR5QEiQ50B6CZeLAx
|
36
|
+
0ZbFvuQZbFmrQk1+kPjecIT9
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2022-02-01 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: c32
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: 2.2.0.1
|
80
80
|
description:
|
81
|
-
email:
|
81
|
+
email: digital.robertson@gmail.com
|
82
82
|
executables: []
|
83
83
|
extensions: []
|
84
84
|
extra_rdoc_files: []
|
@@ -103,7 +103,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '0'
|
105
105
|
requirements: []
|
106
|
-
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 2.7.10
|
107
108
|
signing_key:
|
108
109
|
specification_version: 4
|
109
110
|
summary: table-formatter prints a table in plain text format or Markdown format from
|
metadata.gz.sig
CHANGED
Binary file
|