nub 0.0.74 → 0.0.75

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