semi 0.5.1 → 0.6.0

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
  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