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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ffdb482763d3dd17658facee344acf75ef8463d7674ec17f9ba76cf03d344bb
4
- data.tar.gz: 2b06dce0bc8c96371ceccff078d65a429f9ea94e3fbdec09821fcf558f3a3e29
3
+ metadata.gz: c5999fb1317e9737b0f1635fabedbf445f5c721fba5b3bbe3840e4877cce3014
4
+ data.tar.gz: 77d77b46e2b950b39d9de2b21fee171e90a5e980080dc7d835a062657e8368c5
5
5
  SHA512:
6
- metadata.gz: 16862b70470c69da4da30d6f5e2b25b1e83731befaa2e5145f5023d7210c9a236f6de83278d8cfabbc07defd55d74c33e18f65b94c60c55f0ee2093d587555ec
7
- data.tar.gz: 94b0ebffb80fbc6804d0ca27bd77a9dabcf63914c769f415a1b4b4065a15ddb6e2b940a3396984a68cda7a989ffbe6f347423f8278e0b1861107acd0e7ff9559
6
+ metadata.gz: 2e14f4967da9531fbd776dae27ac96371941706bbdfff3f6c7705d31f5cc5a4be3515c8367678bcaf86f5372d19dd0bbf59535ee039309c35679a929c84e21ee
7
+ data.tar.gz: 4277a647369fd8911c48bc22cf8b77cfdfbd496cd5d0d9e3b1e1f9d9be03e751fe9ff98d5158b19e2c0e70d294ca763299522583c7bd50709fd4d2608aeb8f58
data/lib/nub/commander.rb CHANGED
@@ -22,7 +22,7 @@ require 'colorize'
22
22
  require 'ostruct'
23
23
  require_relative 'log'
24
24
  require_relative 'sys'
25
- require_relative 'string'
25
+ require_relative 'core'
26
26
 
27
27
  # Command option encapsulation
28
28
  class Option
@@ -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
@@ -24,7 +24,7 @@ require 'monitor'
24
24
  require 'ostruct'
25
25
  require 'colorize'
26
26
  require_relative 'sys'
27
- require_relative 'string'
27
+ require_relative 'core'
28
28
 
29
29
  LogLevel = OpenStruct.new({
30
30
  error: 0,
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.74
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-07 00:00:00.000000000 Z
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