nub 0.0.74 → 0.0.75
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/nub/commander.rb +1 -1
- data/lib/nub/{string.rb → core.rb} +85 -0
- data/lib/nub/log.rb +1 -1
- data/lib/nub.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5999fb1317e9737b0f1635fabedbf445f5c721fba5b3bbe3840e4877cce3014
|
4
|
+
data.tar.gz: 77d77b46e2b950b39d9de2b21fee171e90a5e980080dc7d835a062657e8368c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e14f4967da9531fbd776dae27ac96371941706bbdfff3f6c7705d31f5cc5a4be3515c8367678bcaf86f5372d19dd0bbf59535ee039309c35679a929c84e21ee
|
7
|
+
data.tar.gz: 4277a647369fd8911c48bc22cf8b77cfdfbd496cd5d0d9e3b1e1f9d9be03e751fe9ff98d5158b19e2c0e70d294ca763299522583c7bd50709fd4d2608aeb8f58
|
data/lib/nub/commander.rb
CHANGED
@@ -19,6 +19,8 @@
|
|
19
19
|
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
20
|
#SOFTWARE.
|
21
21
|
|
22
|
+
require 'erb'
|
23
|
+
|
22
24
|
ColorPair = Struct.new(:str, :color_code, :color_name)
|
23
25
|
ColorMap = {
|
24
26
|
30 => "black",
|
@@ -32,9 +34,92 @@ ColorMap = {
|
|
32
34
|
39 => "gray88" # default
|
33
35
|
}
|
34
36
|
|
37
|
+
class ERBContext
|
38
|
+
|
39
|
+
# Creates an isolated ERB variable context easily from a hash
|
40
|
+
# @param hash [Hash] variables to use for ERB context
|
41
|
+
def initialize(hash)
|
42
|
+
hash.each{|k,v| singleton_class.send(:define_method, k){ v }}
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_binding
|
46
|
+
binding
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class ERBResolve
|
51
|
+
|
52
|
+
# Resolve variables for the given data type
|
53
|
+
# @param vars [Hash/OpenStruct] hash or OpenStruct of ERB variables to use
|
54
|
+
def initialize(vars)
|
55
|
+
raise ArgumentError.new("Variables are required") if not vars
|
56
|
+
|
57
|
+
@vars = vars.is_a?(OpenStruct) ? vars.to_h : vars
|
58
|
+
@context = ERBContext.new(@vars).get_binding
|
59
|
+
end
|
60
|
+
|
61
|
+
# Resolve variables for the given data type
|
62
|
+
# @data [string/array/hash] data to replace vars
|
63
|
+
# @returns mutated data structure
|
64
|
+
def resolve(data)
|
65
|
+
|
66
|
+
# Recurse
|
67
|
+
if data.is_a?(Array)
|
68
|
+
data = data.map{|x| resolve(x)}
|
69
|
+
elsif data.is_a?(Hash)
|
70
|
+
data.each{|k,v| data[k] = resolve(v)}
|
71
|
+
end
|
72
|
+
|
73
|
+
# Base case
|
74
|
+
if data.is_a?(String)
|
75
|
+
data = ERB.new(data).result(@context)
|
76
|
+
end
|
77
|
+
|
78
|
+
return data
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Hash extensions
|
83
|
+
class Hash
|
84
|
+
|
85
|
+
# Do a deep copy on the object
|
86
|
+
def clone
|
87
|
+
hash = {}
|
88
|
+
self.each{|k, v| hash[k] = v.clone }
|
89
|
+
return hash
|
90
|
+
end
|
91
|
+
|
92
|
+
# Easily inject ERB variables into hash values
|
93
|
+
# +vars+:: hash of variables to inject into the string
|
94
|
+
def erb(vars = {})
|
95
|
+
ERBResolve.new(vars).resolve(self)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# Array extensions
|
100
|
+
class Array
|
101
|
+
|
102
|
+
# Do a deep copy on the object
|
103
|
+
def clone
|
104
|
+
return self.map{|x| x.clone }
|
105
|
+
end
|
106
|
+
|
107
|
+
# Easily inject ERB variables into Array values
|
108
|
+
# +vars+:: hash of variables to inject into the string
|
109
|
+
def erb(vars = {})
|
110
|
+
ERBResolve.new(vars).resolve(self)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
35
114
|
# Monkey patch string with some useful methods
|
36
115
|
class String
|
37
116
|
|
117
|
+
# Easily inject ERB variables into a string
|
118
|
+
# @param vars [Hash] of variables to inject into the string
|
119
|
+
def erb(vars = {})
|
120
|
+
ERBResolve.new(vars).resolve(self)
|
121
|
+
end
|
122
|
+
|
38
123
|
# Convert the string to ascii, stripping out or converting all non-ascii characters
|
39
124
|
def to_ascii
|
40
125
|
options = {
|
data/lib/nub/log.rb
CHANGED
data/lib/nub.rb
CHANGED
@@ -24,12 +24,12 @@
|
|
24
24
|
module Nub
|
25
25
|
require 'nub/commander'
|
26
26
|
require 'nub/config'
|
27
|
+
require 'nub/core'
|
27
28
|
require 'nub/fileutils'
|
28
29
|
require 'nub/hash'
|
29
30
|
require 'nub/log'
|
30
31
|
require 'nub/module'
|
31
32
|
require 'nub/net'
|
32
|
-
require 'nub/string'
|
33
33
|
require 'nub/thread_comm'
|
34
34
|
require 'nub/user'
|
35
35
|
require 'nub/sys'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.75
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Crummett
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -91,12 +91,12 @@ files:
|
|
91
91
|
- lib/nub.rb
|
92
92
|
- lib/nub/commander.rb
|
93
93
|
- lib/nub/config.rb
|
94
|
+
- lib/nub/core.rb
|
94
95
|
- lib/nub/fileutils.rb
|
95
96
|
- lib/nub/hash.rb
|
96
97
|
- lib/nub/log.rb
|
97
98
|
- lib/nub/module.rb
|
98
99
|
- lib/nub/net.rb
|
99
|
-
- lib/nub/string.rb
|
100
100
|
- lib/nub/sys.rb
|
101
101
|
- lib/nub/thread_comm.rb
|
102
102
|
- lib/nub/user.rb
|