table-formatter 0.5.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d8938d067b2f19935a1bb9d11a4fe5c563415fc2
4
- data.tar.gz: 8746fc35347518325a855234973096384e4aed4e
2
+ SHA256:
3
+ metadata.gz: c7e3972d61d31bb0e5f4a8530f98bf4a76f8000985e0fddc646d200df5c3bd8c
4
+ data.tar.gz: c12315a1c23b7900bfa0afc3150948cccd7072c50643d2089ca156d5f9a52937
5
5
  SHA512:
6
- metadata.gz: cd992b5a66bfe5e7c9637a31a828b5017fac34ca1025449cb12e64207d3cac80567c5d53cd5f9248d15d5a4108239feda977217a35cccbf6b6553376beecd30f
7
- data.tar.gz: d1b6e130f0d119c7b64e08a9af7013e2675cbb60f9f855d4386ea39e6eb870d676767225809e78813f85da011febcc10a6e4063e14209fdda709cf55096d3546
6
+ metadata.gz: ecb25c9968b96b7d472bae86d05aac743756ad20f974b70732fb672cc3430a7102b9535ebecda1f21740a69dc0ad736596e25afa4eb1eb8a7e79bd1649392efc
7
+ data.tar.gz: 4215518c58acfe6e2513b30cfc65fa4b3090ef38f8b17e2e78bbebf9b386665cde4d8eee424abd877697eff7e529456f94b1617a88aee65736428d154e3426a3
checksums.yaml.gz.sig CHANGED
Binary file
@@ -2,14 +2,15 @@
2
2
 
3
3
  # file: table-formatter.rb
4
4
 
5
+ require 'c32'
5
6
  require 'rdiscount'
6
7
 
7
-
8
8
  class TableFormatter
9
+ using ColouredText
9
10
 
10
11
  attr_accessor :source, :labels, :border, :divider, :markdown, :col_justify
11
-
12
- def initialize(source: nil, labels: nil, border: true, wrap: true,
12
+
13
+ def initialize(source: nil, labels: nil, border: true, wrap: true,
13
14
  divider: nil, markdown: false, innermarkdown: false, debug: false)
14
15
 
15
16
  super()
@@ -22,15 +23,15 @@ class TableFormatter
22
23
  @markdown = markdown
23
24
  @innermarkdown = innermarkdown
24
25
  @debug = debug
25
-
26
+
26
27
  end
27
-
28
+
28
29
  def justify(s, ajust)
29
-
30
+
30
31
  a = s.split('|')
31
-
32
+
32
33
  a2 = ajust.map.with_index do |x,i|
33
-
34
+
34
35
  s = a[i+1]
35
36
 
36
37
  case x
@@ -43,13 +44,15 @@ class TableFormatter
43
44
  end
44
45
  end
45
46
 
46
- "|%s|\n" % a2.join('|')
47
+ "|%s|\n" % a2.join('|')
47
48
 
48
49
  end
49
-
50
+
50
51
  def display(width=nil, widths: nil, markdown: @markdown)
51
-
52
+
52
53
  @align_cols = []
54
+ @labels ||= [''] * @source.first.length
55
+
53
56
  if @labels then
54
57
 
55
58
  labels = []
@@ -66,12 +69,14 @@ class TableFormatter
66
69
  {ljust: :l, rjust: :r, center: :c}[col]
67
70
  end
68
71
 
69
- return display_markdown(@source, labels) if markdown
72
+ return display_markdown(@source, labels) if markdown
70
73
 
71
74
  #width ||= @maxwidth
72
75
  @width = width
73
76
  @maxwidth = width if width
74
- a = @source.map {|x| x.map{|y| y.length > 0 ? y : ' ' }}.to_a
77
+ a = @source.map do |x|
78
+ x.map{|y| col = y.to_s; col.length > 0 ? col : ' ' }
79
+ end.to_a
75
80
 
76
81
  column_widths = widths ? widths : fetch_column_widths(a)
77
82
 
@@ -81,7 +86,7 @@ class TableFormatter
81
86
 
82
87
  div = (border == true ? '-' : '') * records[0].length + "\n"
83
88
  label_buffer = ''
84
-
89
+
85
90
  label_buffer = format_cols(labels, column_widths) + "\n" + div if labels
86
91
 
87
92
  div + label_buffer + records.join("\n") + "\n" + div
@@ -92,35 +97,35 @@ class TableFormatter
92
97
 
93
98
 
94
99
  private
95
-
100
+
96
101
  def display_markdown(a, fields)
97
-
102
+
98
103
  print_row = -> (row, widths) do
99
104
  '| ' + row.map\
100
105
  .with_index {|y,i| y.to_s.ljust(widths[i])}.join(' | ') + " |\n"
101
- end
106
+ end
102
107
 
103
108
  print_thline = -> (row, widths) do
104
109
  '|:' + row.map\
105
110
  .with_index {|y,i| y.to_s.ljust(widths[i])}.join('|:') + "|\n"
106
111
  end
107
-
112
+
108
113
  if @debug then
109
-
114
+
110
115
  puts '@labels: ' + @labels.inspect
111
116
  puts 'thline: ' + print_thline.inspect
112
-
117
+
113
118
  end
114
-
119
+
115
120
  print_rows = -> (rows, widths) do
116
121
  rows.map {|x| print_row.call(x,widths)}.join
117
122
  end
118
123
 
119
-
124
+
120
125
  raw_vals = a
121
126
 
122
127
  # create Markdown hyperlinks for any URLs
123
-
128
+
124
129
  vals = raw_vals.map do |row|
125
130
 
126
131
  row.map do |col|
@@ -136,46 +141,49 @@ class TableFormatter
136
141
  url_title = (a.join('.') + path)[0..39] + '...'
137
142
 
138
143
  "[%s](%s)" % [url_title, col]
139
-
144
+
140
145
  else
141
-
142
- if @innermarkdown then
143
- "{::nomarkdown}" +
146
+
147
+ if @innermarkdown then
148
+ "{::nomarkdown}" +
144
149
  RDiscount.new(col).to_html.strip.gsub("\n",'') + "{:/}"
145
150
  else
146
151
 
147
152
  col
148
-
153
+
149
154
  end
150
-
155
+
151
156
  end
152
-
157
+
153
158
  r
154
159
  end
155
- end
160
+ end
156
161
 
157
- widths = ([(fields + ['']).take(a.first.length)] +
162
+ puts ('fields: ' + fields.inspect).debug if @debug
163
+ if fields then
164
+ widths = ([(fields + ['']).take(a.first.length)] +
158
165
  vals).transpose.map{|x| x.max_by(&:length).length}
166
+ end
159
167
 
160
- th = if @labels then
168
+ th = if @labels.map(&:strip).join.length > 0 then
161
169
  print_row.call(fields, widths)
162
170
  else
163
171
  ''
164
172
  end
165
-
166
- th_line = print_thline.call widths.map {|x| '-' * (x+1)}, widths
167
- tb = print_rows.call(vals, widths)
168
- th_line2 = justify(th_line, @col_justify)
169
-
170
- 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
171
179
  end
172
180
 
173
181
  def display_markdown2(a, fields)
174
-
182
+
175
183
  print_row = -> (row, widths) do
176
-
177
- '| ' + row.map.with_index do |y,i|
178
- align = @align_cols ? @align_cols[i] : :ljust
184
+
185
+ '| ' + row.map.with_index do |y,i|
186
+ align = @align_cols ? @align_cols[i] : :ljust
179
187
  y.to_s.method(align).call(widths[i])
180
188
  end.join(' | ') + " |\n"
181
189
  end
@@ -199,9 +207,9 @@ class TableFormatter
199
207
  tb = print_rows.call(a, widths)
200
208
  table = th + th_line2 + tb
201
209
  end
202
-
210
+
203
211
  def fetch_column_widths(a)
204
-
212
+
205
213
  puts 'a: ' + a.inspect if @debug
206
214
  d = tabulate(a).map &:flatten
207
215
  puts 'd: ' + d.inspect if @debug
@@ -209,16 +217,18 @@ class TableFormatter
209
217
  d.map{|x| x.max_by(&:length).length}
210
218
 
211
219
  end
212
-
220
+
213
221
  def format_cols(row, col_widths, bar='')
214
222
 
215
- outer_bar, inner_spacer = '', ''
216
- (outer_bar = bar = '|'; inner_spacer = ' ') if border == true
223
+ outer_bar = ''
224
+ inner_spacer = border ? ' ' : ''
225
+ outer_bar = border ? '|' : ''
226
+ #(outer_bar = bar = '|'; inner_spacer = ' ') if border == true
217
227
  col_spacer = @divider ? 0 : 2
218
-
228
+
219
229
  buffer = outer_bar
220
230
 
221
-
231
+
222
232
  row.each_with_index do |col, i|
223
233
 
224
234
  align = @align_cols.any? ? @align_cols[i] : :ljust
@@ -230,45 +240,46 @@ class TableFormatter
230
240
  end
231
241
 
232
242
  buffer += inner_spacer + val + next_bar.to_s
233
- end
234
-
243
+ puts 'buffer: ' + buffer.inspect if @debug
244
+ end
245
+
235
246
  buffer
236
247
 
237
- end
248
+ end
238
249
 
239
250
  def format_rows(raw_a, col_widths)
240
251
 
241
252
  @width = col_widths.inject(&:+)
242
253
 
243
254
  col_widths[-1] -= col_widths.inject(&:+) - @maxwidth if @width > @maxwidth
244
-
255
+
245
256
  a = if @wrap == true then
246
-
257
+
247
258
  raw_a.map do |raw_row|
248
259
 
249
260
  rowx = raw_row.map.with_index do |col, i|
250
261
  col.chars.each_slice(col_widths[i]).map(&:join)
251
- end
252
-
262
+ end
263
+
253
264
  max_len = rowx.max_by {|x| x.length}.length
254
-
255
- rowx.each do |x|
265
+
266
+ rowx.each do |x|
256
267
  len = x.length
257
268
  x.concat ([''] * (max_len - len)) if len < max_len
258
269
  end
259
-
270
+
260
271
  rowx.transpose
261
272
  end.flatten(1)
262
273
  else
263
274
  raw_a
264
275
  end
265
-
276
+
266
277
  a.map {|row| format_cols(row, col_widths, divider) }
267
278
 
268
279
  end
269
280
 
270
281
  def just(x)
271
-
282
+
272
283
  case x
273
284
  when /^:.*:$/
274
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.5.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,29 +10,53 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTE3MDkwNjExNTY0OFoXDTE4MDkwNjExNTY0OFowSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBANMzRKAQ4QqtTKx2TzuG01Qkl29pye6ODCkt934jWLMI8jiWZf6UIbvi4kz4
19
- KAq6XX4wGdR0q2K11csEDH1HtNXBma57f5Y3utj3KJ/KPOit8nAv2DrRiQHcuQuk
20
- d7N1dL1u1aK6yirKoNYpqkoYrYWxjCmWBxWPcqy5cCaijUqgg5++a4e1RZD+jDzB
21
- u4m1guS3MR4Jw8XObIRudqHUDuSYRA1lERaB/qjALQyF4PLBA1L3nDPdWSym6qq2
22
- SIoHpCYbiZhAldcBApyKiOYmtk315+l9ZzzQKM7Vp+kq7GiHl/bkSKq6KSpUIhDF
23
- Z7An8TcS5bIM/4FGx7OsiZ1mN90CAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQU7/J23xpZAHhVPNxsDL92DfgZ3BowJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAC2ebp88P
27
- 7fgjYcmIvIHP3wTedCAeScJQVNEv5RDOlz5vMFzoZ/aLaytEaRxqMGkPieSwH3Z5
28
- NpLGgyMyk3AneVN1JPtYExGfLYakVJ+x50rizAZirYdVBINTi44M1ZkuQGvFmldp
29
- 89PRQvVuvpuYtAz0R94jC4zV3aC044vElu4FDMeMZRKBus4EFfaijZd7kPqRlzpa
30
- uRCZ4WsmyKOap1NS0U7ZiXnJRvo0O5iptjFcbl/3rSTSRCIof+a35uCJppcSjhGZ
31
- HGsLe8SKG8DXaaZxtrfB5toes3L8kzgWrblCbrvE10LDGRcRXwMSshNtb9iyK1mh
32
- pR4QFidc/b8Rlw==
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
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
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
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
33
37
  -----END CERTIFICATE-----
34
- date: 2018-03-06 00:00:00.000000000 Z
38
+ date: 2022-02-01 00:00:00.000000000 Z
35
39
  dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: c32
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.2.0
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.2'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.2.0
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '0.2'
36
60
  - !ruby/object:Gem::Dependency
37
61
  name: rdiscount
38
62
  requirement: !ruby/object:Gem::Requirement
@@ -54,7 +78,7 @@ dependencies:
54
78
  - !ruby/object:Gem::Version
55
79
  version: 2.2.0.1
56
80
  description:
57
- email: james@jamesrobertson.eu
81
+ email: digital.robertson@gmail.com
58
82
  executables: []
59
83
  extensions: []
60
84
  extra_rdoc_files: []
@@ -80,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
104
  version: '0'
81
105
  requirements: []
82
106
  rubyforge_project:
83
- rubygems_version: 2.6.13
107
+ rubygems_version: 2.7.10
84
108
  signing_key:
85
109
  specification_version: 4
86
110
  summary: table-formatter prints a table in plain text format or Markdown format from
metadata.gz.sig CHANGED
Binary file