xprint 0.9.1 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- 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,
|