sh_vars 1.0.0 → 1.0.1

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: 57f7bfacb048c3592ab7325dcaf8fc99466f072eeb2c146db9218e910348f8dd
4
- data.tar.gz: 90146d1a36f79e9d585d8517153f62bfecf7e71bf340f0079aa23681bba09f44
3
+ metadata.gz: adb65ac8d005256f6f0504cc308cced8929ea3bfef5b624a8bbd264a711fa91d
4
+ data.tar.gz: d963c22a20bd91d220eef51dcd76d0222b1911046afa6290163ad0b5b4cb07aa
5
5
  SHA512:
6
- metadata.gz: 64a7ee0d58b729dbf2ac572dca32d7964f057e4fcdbfa419c47630aceb5ac36a6853646e5f1360ff138372cfbe57d4365d30d0322825de4ed2c0de1e0f688380
7
- data.tar.gz: 3f33a69120bb971345165030b2eb3206281bc4ece6e5b48d739d7c840ca5e7133b096b253b51b17eae10b29f7065f8690f89865f80404b2e7f33c10db9aab33b
6
+ metadata.gz: a5959d3cbb4ca3e9e9ed7dd6f5629e506981c2c902546a2e3c573e8de005eecf7e5a21c2b20742c32b551649f368b23fce88247a29735896f26f4e9bd1309f05
7
+ data.tar.gz: 539b2ebbdbaa25f505837635dc7cb54f569dcf2c0495c40299b2b1618524f6726da392ba77977d54200ac2a2cc0f81034706636bf7213b598fb065c35771f734
@@ -11,7 +11,7 @@ module ShVars
11
11
  end
12
12
 
13
13
  KEY = %r([^\s=]+)
14
- WORD = %r((\\.|(?!\s|"|'|`|\${|\$\(|\)).)+)
14
+ WORD = %r((\\.|(?!\s|"|'|`|\${|\$\().))
15
15
  SPACE = %r(\s+)
16
16
  EQUAL = %r(=)
17
17
  OPEN = %r(\$\(|\$\{)
@@ -33,7 +33,7 @@ module ShVars
33
33
  end
34
34
 
35
35
  def pair
36
- double_quoted_pair || unquoted_pair
36
+ double_quoted_pair || unquoted_pair || empty_pair
37
37
  end
38
38
 
39
39
  def double_quoted_pair
@@ -49,6 +49,12 @@ module ShVars
49
49
  [key, parts.join]
50
50
  end
51
51
 
52
+ def empty_pair
53
+ key = word
54
+ pair = [key, ''] if key
55
+ pair
56
+ end
57
+
52
58
  def values
53
59
  parts, part = [], nil
54
60
  parts << part while part = value || space
@@ -80,7 +86,9 @@ module ShVars
80
86
  end
81
87
 
82
88
  def word
83
- scan(WORD) unless quote? || paren?
89
+ chars, char = [], nil
90
+ chars << char while !quote? && char = scan(WORD)
91
+ chars.join if chars.any?
84
92
  end
85
93
 
86
94
  def space
@@ -104,7 +112,7 @@ module ShVars
104
112
 
105
113
  parts, part = [], nil
106
114
  parts << part while part = scan_quote(quote)
107
- parts << value
115
+ parts << values
108
116
  parts << part while part = scan_quote(quote)
109
117
 
110
118
  quotes.pop
@@ -141,6 +149,10 @@ module ShVars
141
149
  ['\\' * (level - 1), quote].join if str
142
150
  end
143
151
 
152
+ def space?
153
+ peek(1) =~ SPACE
154
+ end
155
+
144
156
  def paren?
145
157
  open.any? && peek(open.last.size) == open.last
146
158
  end
@@ -1,3 +1,3 @@
1
1
  module ShVars
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sh_vars
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Fuchs
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-04-28 00:00:00.000000000 Z
12
+ date: 2019-04-29 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Shell var parser.
15
15
  email: