semi 0.5.1 → 0.6.0

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
  SHA1:
3
- metadata.gz: 4fce5fc892b8b2580065e3ea26962266cc3c5e94
4
- data.tar.gz: e7838ad1cd46b5eeb41bdc0c900035620e43db85
3
+ metadata.gz: 2c505c74d8b3a177675808de5458154eb98e562f
4
+ data.tar.gz: 1fa3bdb689b9fa0a92bf959abcfaab0f40b8ae6c
5
5
  SHA512:
6
- metadata.gz: 3c77242bcc00ffdc56f833534aa8aea287012e9b8bb6ecb6916f8037b89acd0133e72f4075049c1032ce20acc6c3902607b4c58c077595693f8c55aaa4eae6fd
7
- data.tar.gz: 7895df9833744e8d0e8528865bad7017932da4fb1582b7d95b669bba12758284aa68169e423610d849c675108b64d05b51415dee5f0f7659999ae58ccc3cc144
6
+ metadata.gz: 5bcd802480e24a8d688217e2c86d1a3ac144a211ef1b641bedbe06e6c444d3cc34159299191754db7af87b647519eb23f63b3ce186559a6acf24a1f3dccecc8d
7
+ data.tar.gz: 6a12312e2f8b73f204f705f743338b8b320842e92f6a56676c97ca20470f8868cce36411cc35acbba7b5a52e57cafe6e1792380e2482fb6a49c7ff3f3deabd06
data/lib/semi/variable.rb CHANGED
@@ -52,15 +52,17 @@ module Semi
52
52
 
53
53
 
54
54
  def self.expand(val, dict)
55
+ unless ['Semi::Variables::String', 'String'].include? val.class.to_s
56
+ return val
57
+ end
58
+
55
59
  check = true
56
60
  while check
57
61
  # Look for simple variable expansion
58
- if val =~ /\$\{?(\w+)\}?/
59
- Regexp.last_match
60
- val = $` + expand($1, dict) + $'
61
- elsif val =~ /\$\((.*)\)/
62
- Regexp.last_match
63
- val = $` + `$1` + $'
62
+ if match = /\$\{?(\w+)\}?/.match(val)
63
+ val = match.pre_match + dict[match[1].downcase] + match.post_match
64
+ elsif match = /\$\((.*)\)/.match(val)
65
+ val = match.pre_match + `#{match[1]} 2>/dev/null` + match.post_match
64
66
  else
65
67
  # no more matches... we must be done...
66
68
  check = false
@@ -26,7 +26,7 @@ module Semi::Variables
26
26
  end
27
27
  false
28
28
  end
29
-
29
+
30
30
  def method_missing(m, *args, &block)
31
31
  @value.to_i.send(m, *args, &block)
32
32
  end
data/lib/semi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Semi
2
- version = '0.5.1'
2
+ version = '0.6.0'
3
3
  end
@@ -102,4 +102,23 @@ describe Semi::Variable do
102
102
  end
103
103
  end
104
104
 
105
+ dictionary = {'one' => Semi::Variables::Integer.new(1),
106
+ 'two' => Semi::Variables::Integer.new(2),
107
+ 'alpha' => Semi::Variables::String.new('a'),
108
+ 'beta' => Semi::Variables::String.new('b')}
109
+
110
+ [ #value, #expected
111
+ ['abc123', 'abc123'],
112
+ ['a$alpha', 'aa'],
113
+ ['a$ALPHA', 'aa'],
114
+ ['a${alpha}', 'aa'],
115
+ ['a${ALPHA}', 'aa'],
116
+ ['## $alpha / $beta ++', '## a / b ++'],
117
+ ['## $ALPHA / $BETA ++', '## a / b ++'],
118
+ ].each do |test|
119
+ it "#expand transforms '#{test[0]}' to '#{test[1]}'" do
120
+ expect(Semi::Variable::expand(test[0], dictionary)).to eql test[1]
121
+ end
122
+ end
123
+
105
124
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerard Hickey