xprint 0.9.1 → 0.9.3
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 +4 -4
- data/lib/version.rb +1 -1
- data/lib/xprint.rb +79 -64
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb5466745989b6f6b023b74f46af89fd0dfb6ff6c10ced23260209bb288aa80d
|
4
|
+
data.tar.gz: e434c017113835cf167843c788eff0ae215336ec0922fcb14ff3e0b4da8092cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af1bf6ed25d0ec37d81e06cb1dec4d4608b4f4cf6e247aa072df8673014dc4f0a6411b0db2edfe6dd32289353d3662c6368eb3148b277edb69182bb756ef0b93
|
7
|
+
data.tar.gz: 8465b18e98ec0d5c71e3e0536d86db8789c7b8625017627175570c883801ce77e951d3e4fc03f5ef949ac61cd1c15c6f123de514718149d28185315971d4544b
|
data/lib/version.rb
CHANGED
data/lib/xprint.rb
CHANGED
@@ -3,41 +3,49 @@ require 'date'
|
|
3
3
|
require 'yaml'
|
4
4
|
|
5
5
|
module XPrint
|
6
|
-
@data_classes
|
6
|
+
@data_classes = [
|
7
7
|
String, Integer, Float, TrueClass, FalseClass, NilClass,
|
8
8
|
Symbol, Date, Time, DateTime, BigDecimal, Rational
|
9
9
|
]
|
10
10
|
@hash_name_classes = @data_classes + [Proc]
|
11
|
-
@tab
|
12
|
-
@indexes
|
13
|
-
@full_proc_path
|
14
|
-
@braces
|
15
|
-
@date_format
|
16
|
-
@time_format
|
17
|
-
@datetime_format
|
18
|
-
@
|
19
|
-
@
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
11
|
+
@tab = " "
|
12
|
+
@indexes = true
|
13
|
+
@full_proc_path = false
|
14
|
+
@braces = true
|
15
|
+
@date_format = '%F'
|
16
|
+
@time_format = '%c'
|
17
|
+
@datetime_format = '%FT%T%:z'
|
18
|
+
@hash_separator = ' => '
|
19
|
+
@commas = true
|
20
|
+
@color = true
|
21
|
+
@colors = {
|
22
|
+
attribute: :blue,
|
23
|
+
bigdecimal: :darkcyan,
|
24
|
+
classname: :darkgreen,
|
25
|
+
classobject: :green,
|
26
|
+
comma: :default,
|
27
|
+
curly_brace: :default,
|
28
|
+
date: :red,
|
29
|
+
datetime: :purple,
|
30
|
+
equals: :default,
|
31
|
+
false: :darkred,
|
32
|
+
float: :cyan,
|
33
|
+
hash_separator: :default,
|
34
|
+
index: :darkgrey,
|
35
|
+
integer: :cyan,
|
36
|
+
module: :green,
|
37
|
+
nil: :darkpurple,
|
38
|
+
parentheses: :default,
|
39
|
+
proc: :darkyellow,
|
40
|
+
rational: :darkcyan,
|
41
|
+
string: :yellow,
|
42
|
+
struct: :green,
|
43
|
+
square_brace: :default,
|
44
|
+
symbol: :darkblue,
|
45
|
+
time: :darkblue,
|
46
|
+
true: :darkgreen
|
39
47
|
}
|
40
|
-
@color_codes
|
48
|
+
@color_codes = {
|
41
49
|
black: "\e[30m",
|
42
50
|
blue: "\e[94m",
|
43
51
|
darkblue: "\e[34m",
|
@@ -53,25 +61,12 @@ module XPrint
|
|
53
61
|
darkpurple: "\e[35m",
|
54
62
|
yellow: "\e[93m",
|
55
63
|
darkyellow: "\e[33m",
|
56
|
-
|
64
|
+
default: "\e[0m"
|
57
65
|
}
|
58
66
|
|
59
67
|
def self.set(**kwargs)
|
60
|
-
set_vars = {
|
61
|
-
tab: ->(data) { @tab = data },
|
62
|
-
indexes: ->(data) { @indexes = data },
|
63
|
-
full_proc_path: ->(data) { @full_proc_path = data },
|
64
|
-
braces: ->(data) { @braces = data },
|
65
|
-
date_format: ->(data) { @date_format = data },
|
66
|
-
time_format: ->(data) { @time_format = data },
|
67
|
-
datetime_format: ->(data) { @datetime_format = data },
|
68
|
-
color: ->(data) { @color = data }
|
69
|
-
}
|
70
|
-
|
71
68
|
kwargs.each do |keyword, arg|
|
72
|
-
|
73
|
-
set_vars[keyword].(arg)
|
74
|
-
end
|
69
|
+
self.instance_variable_set "@#{keyword}", arg
|
75
70
|
end
|
76
71
|
|
77
72
|
return
|
@@ -148,7 +143,7 @@ module XPrint
|
|
148
143
|
end
|
149
144
|
|
150
145
|
private_class_method def self.reset_color()
|
151
|
-
@color_codes[:
|
146
|
+
@color_codes[:default]
|
152
147
|
end
|
153
148
|
|
154
149
|
private_class_method def self.colorize(text, type)
|
@@ -217,7 +212,8 @@ module XPrint
|
|
217
212
|
|
218
213
|
# X is an Array, print list of all items.
|
219
214
|
elsif x.class == Array
|
220
|
-
result = "#{@braces ? '[' : ''}\n"
|
215
|
+
result = "#{@braces ? colorize('[', :square_brace) : ''}\n"
|
216
|
+
comma = colorize(',', :comma)
|
221
217
|
|
222
218
|
x.each_with_index do |item, index|
|
223
219
|
data = xpand(item, indent: _indent, tab: tab)
|
@@ -234,16 +230,17 @@ module XPrint
|
|
234
230
|
result += "#{data}"
|
235
231
|
|
236
232
|
unless index + 1 == x.length
|
237
|
-
result += "#{@
|
233
|
+
result += "#{@commas ? "#{comma} " : ''} \n"
|
238
234
|
end
|
239
235
|
end
|
240
236
|
|
241
|
-
result += "\n#{indent}]" if @braces
|
237
|
+
result += "\n#{indent}#{colorize(']', :square_brace)}" if @braces
|
242
238
|
return result
|
243
239
|
|
244
240
|
# X is a Hash, print all keys and values.
|
245
241
|
elsif x.class == Hash
|
246
|
-
|
242
|
+
comma = colorize(',', :comma)
|
243
|
+
result = "#{@braces ? colorize('{', :curly_brace) : ''}\n"
|
247
244
|
|
248
245
|
longest_key = (
|
249
246
|
x.keys.filter do |k, v|
|
@@ -277,63 +274,81 @@ module XPrint
|
|
277
274
|
|
278
275
|
data_value = xpand(value, indent: _indent, tab: tab)
|
279
276
|
|
280
|
-
|
277
|
+
hash_separator = colorize(@hash_separator, :hash_separator)
|
278
|
+
result += "#{_indent}#{data_key}#{hash_separator}#{data_value}"
|
281
279
|
|
282
280
|
unless index + 1 == x.length
|
283
|
-
result += "#{@
|
281
|
+
result += "#{@commas ? "#{comma} " : ''} \n"
|
284
282
|
end
|
285
283
|
end
|
286
284
|
|
287
|
-
result += "\n#{indent}}" if @braces
|
285
|
+
result += "\n#{indent}#{colorize('}', :curly_brace)}" if @braces
|
288
286
|
|
289
287
|
return result
|
290
288
|
|
291
289
|
# X is a commonly used special kind of object.
|
292
290
|
elsif x.class == DateTime
|
293
291
|
datetime = x.strftime @datetime_format
|
294
|
-
|
292
|
+
p1 = colorize('(', :parentheses)
|
293
|
+
p2 = colorize(')', :parentheses)
|
294
|
+
return colorize("DateTime#{p1}#{datetime}#{p2}", :datetime)
|
295
295
|
|
296
296
|
elsif x.class == Date
|
297
297
|
date = x.strftime @date_format
|
298
|
-
|
298
|
+
p1 = colorize('(', :parentheses)
|
299
|
+
p2 = colorize(')', :parentheses)
|
300
|
+
return colorize("Date#{p1}#{date}#{p2}", :date)
|
299
301
|
|
300
302
|
elsif x.class == Time
|
301
303
|
time = x.strftime @time_format
|
302
|
-
|
304
|
+
p1 = colorize('(', :parentheses)
|
305
|
+
p2 = colorize(')', :parentheses)
|
306
|
+
return colorize("Time#{p1}#{time}#{p2}", :time)
|
303
307
|
|
304
308
|
elsif x.class == BigDecimal
|
305
|
-
|
309
|
+
p1 = colorize('(', :parentheses)
|
310
|
+
p2 = colorize(')', :parentheses)
|
311
|
+
return colorize("BigDecimal#{p1}#{x.to_s('f')}#{p2}", :bigdecimal)
|
306
312
|
|
307
313
|
elsif x.class == Rational
|
308
|
-
|
314
|
+
p1 = colorize('(', :parentheses)
|
315
|
+
p2 = colorize(')', :parentheses)
|
316
|
+
return colorize("Rational#{p1}#{x}#{p2}", :rational)
|
309
317
|
|
310
318
|
# X is a Structure; essentially a special case of X being an object.
|
311
319
|
elsif x.is_a? Struct
|
312
320
|
struct_word = colorize('Struct', :struct)
|
313
321
|
classname = colorize(x.class, :struct)
|
314
|
-
|
322
|
+
p1 = colorize('(', :parentheses)
|
323
|
+
p2 = colorize(')', :parentheses)
|
324
|
+
result = "#{struct_word} #{classname}#{@braces ? p1 : ''}\n"
|
315
325
|
longest_item = x.members.map { |m| m.to_s.length }.max()
|
326
|
+
eq_sign = colorize('=', :equals)
|
316
327
|
|
317
328
|
x.each_pair do |name, value|
|
318
329
|
attr_name = colorize(name.to_s.ljust(longest_item), :attribute)
|
319
330
|
attr_data = xpand(value, indent: _indent, tab: tab)
|
320
331
|
|
321
|
-
result += "#{_indent}#{attr_name}
|
332
|
+
result += "#{_indent}#{attr_name} #{eq_sign} #{attr_data}\n"
|
322
333
|
end
|
323
334
|
|
324
|
-
result += "#{indent}
|
335
|
+
result += "#{indent}#{p2}" if @braces
|
325
336
|
|
326
337
|
return result
|
327
338
|
|
328
339
|
# X is any arbitrary object; print all instance variables.
|
329
340
|
else
|
341
|
+
p1 = colorize('(', :parentheses)
|
342
|
+
p2 = colorize(')', :parentheses)
|
343
|
+
|
330
344
|
is_module = x.class == Module
|
331
345
|
classname = is_module ? "Module #{x}" : x.class
|
332
346
|
classname = colorize(classname, is_module ? :module : :classname)
|
333
|
-
result = "#{classname}#{@braces ?
|
347
|
+
result = "#{classname}#{@braces ? p1 : ''}"
|
334
348
|
ivars = x.instance_variables
|
335
349
|
result += "\n" if ivars.length > 0
|
336
350
|
longest_var = ivars.map { |v| v.to_s.length }.max()
|
351
|
+
eq_sign = colorize('=', :equals)
|
337
352
|
|
338
353
|
ivars.each_with_index do |var, index|
|
339
354
|
attr_name = var.to_s.ljust(longest_var)
|
@@ -344,10 +359,10 @@ module XPrint
|
|
344
359
|
tab: tab
|
345
360
|
)
|
346
361
|
|
347
|
-
result += "#{_indent}#{attr_name}
|
362
|
+
result += "#{_indent}#{attr_name} #{eq_sign} #{attr_data}\n"
|
348
363
|
end
|
349
364
|
|
350
|
-
result += "#{ivars.length > 0 ? indent: ''}
|
365
|
+
result += "#{ivars.length > 0 ? indent: ''}#{p2}" if @braces
|
351
366
|
|
352
367
|
return result
|
353
368
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xprint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JCabr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Gem that allows for pretty printing data over multiple lines and with
|
14
14
|
indentation, and works with objects as well as basic data types. Also allows color,
|