xprint 0.8.1 → 0.9.1
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 +55 -5
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72c5d81ad083539ab972c38b51405d5275034ce535f4014696257dbec0d6e5ab
|
4
|
+
data.tar.gz: 950f5d948e5098902d02d25eea8a62c1ec146a0dd58bb052bed139df50d06512
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33fb5f501119a0cb8015797c93f72516276eb332a03b9dba5f01696965a2ab2b8d06659724c8e12dcb3c9dd287df0311a6a11b48e9bef51fdf5bc329e9d114b5
|
7
|
+
data.tar.gz: 11492f4674dcd327edf54cfe909c1c830236ce798f34c830a8ac5f74b36e860ea3548d44af465a72a5ca73af90c8ff5ce3d92f8f8fc429baff92e8d0c2bafaa4
|
data/lib/version.rb
CHANGED
data/lib/xprint.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'bigdecimal'
|
2
2
|
require 'date'
|
3
|
+
require 'yaml'
|
3
4
|
|
4
5
|
module XPrint
|
5
6
|
@data_classes = [
|
@@ -7,14 +8,14 @@ module XPrint
|
|
7
8
|
Symbol, Date, Time, DateTime, BigDecimal, Rational
|
8
9
|
]
|
9
10
|
@hash_name_classes = @data_classes + [Proc]
|
10
|
-
@tab = "
|
11
|
+
@tab = " "
|
11
12
|
@indexes = true
|
12
13
|
@full_proc_path = false
|
13
14
|
@braces = true
|
14
15
|
@date_format = '%F'
|
15
16
|
@time_format = '%c'
|
16
17
|
@datetime_format = '%FT%T%:z'
|
17
|
-
@color =
|
18
|
+
@color = true
|
18
19
|
@colors = {
|
19
20
|
attribute: :blue,
|
20
21
|
bigdecimal: :darkcyan,
|
@@ -76,6 +77,48 @@ module XPrint
|
|
76
77
|
return
|
77
78
|
end
|
78
79
|
|
80
|
+
def self.load_file(config)
|
81
|
+
config_data = YAML.load( File.read config )
|
82
|
+
config_data = self.symbolize_keys(config_data)
|
83
|
+
|
84
|
+
if config_data.key? :general
|
85
|
+
self.set **config_data[:general]
|
86
|
+
end
|
87
|
+
|
88
|
+
if config_data.key? :colors
|
89
|
+
color_data = config_data[:colors]
|
90
|
+
|
91
|
+
color_data.each do |name, color|
|
92
|
+
color_data[name] = color.to_sym
|
93
|
+
end
|
94
|
+
|
95
|
+
self.set_color_for **config_data[:colors]
|
96
|
+
end
|
97
|
+
|
98
|
+
if config_data.key? :'color codes'
|
99
|
+
self.set_color_code_for **config_data[:'color codes']
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.load(config)
|
104
|
+
calling_file = caller_locations.first.absolute_path
|
105
|
+
base_dir = File.dirname calling_file
|
106
|
+
relative_config = File.expand_path config, base_dir
|
107
|
+
|
108
|
+
self.load_file relative_config
|
109
|
+
end
|
110
|
+
|
111
|
+
private_class_method def self.symbolize_keys(hash)
|
112
|
+
hash.inject({}) do |result, (key, value)|
|
113
|
+
new_key = key.to_sym
|
114
|
+
new_value = value.is_a?(Hash) ? symbolize_keys(value) : value
|
115
|
+
|
116
|
+
result[new_key] = new_value
|
117
|
+
|
118
|
+
result
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
79
122
|
def self.set_color_for(**kwargs)
|
80
123
|
kwargs.each do |keyword, arg|
|
81
124
|
@colors[keyword] = arg
|
@@ -135,7 +178,7 @@ module XPrint
|
|
135
178
|
return result
|
136
179
|
end
|
137
180
|
|
138
|
-
def self.xpand(x, indent: '', tab:
|
181
|
+
def self.xpand(x, indent: '', tab: ' ')
|
139
182
|
|
140
183
|
_indent = "#{tab}#{indent}"
|
141
184
|
|
@@ -180,7 +223,14 @@ module XPrint
|
|
180
223
|
data = xpand(item, indent: _indent, tab: tab)
|
181
224
|
|
182
225
|
result += "#{_indent}"
|
183
|
-
|
226
|
+
if @indexes
|
227
|
+
adjustment = x.length.to_s.length + 3
|
228
|
+
# Account for characters used for color coding.
|
229
|
+
adjustment += 9 if @color
|
230
|
+
|
231
|
+
result += "#{colorize("[#{index}]", :index)} ".
|
232
|
+
ljust(adjustment)
|
233
|
+
end
|
184
234
|
result += "#{data}"
|
185
235
|
|
186
236
|
unless index + 1 == x.length
|
@@ -310,4 +360,4 @@ end
|
|
310
360
|
|
311
361
|
def xpand(item, tab: "\t")
|
312
362
|
XPrint::xpand(item, tab: tab)
|
313
|
-
end
|
363
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xprint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JCabr
|
@@ -11,7 +11,8 @@ cert_chain: []
|
|
11
11
|
date: 2020-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Gem that allows for pretty printing data over multiple lines and with
|
14
|
-
indentation, and works with objects as well as basic data types.
|
14
|
+
indentation, and works with objects as well as basic data types. Also allows color,
|
15
|
+
and loading settings via a YAML config file.
|
15
16
|
email:
|
16
17
|
- jcabr.dev@gmail.com
|
17
18
|
executables: []
|