@@ -12,7 +12,14 @@ module.exports = function(input) {
1212 var tokens = [ ] ;
1313 var value = input ;
1414
15- var next , quote , prev , token , escape , escapePos , whitespacePos ;
15+ var next ,
16+ quote ,
17+ prev ,
18+ token ,
19+ escape ,
20+ escapePos ,
21+ whitespacePos ,
22+ parenthesesOpenPos ;
1623 var pos = 0 ;
1724 var code = value . charCodeAt ( pos ) ;
1825 var max = value . length ;
@@ -144,11 +151,12 @@ module.exports = function(input) {
144151 next += 1 ;
145152 code = value . charCodeAt ( next ) ;
146153 } while ( code <= 32 ) ;
154+ parenthesesOpenPos = pos ;
147155 token = {
148156 type : "function" ,
149157 sourceIndex : pos - name . length ,
150158 value : name ,
151- before : value . slice ( pos + 1 , next )
159+ before : value . slice ( parenthesesOpenPos + 1 , next )
152160 } ;
153161 pos = next ;
154162
@@ -175,26 +183,31 @@ module.exports = function(input) {
175183 whitespacePos -= 1 ;
176184 code = value . charCodeAt ( whitespacePos ) ;
177185 } while ( code <= 32 ) ;
178- if ( pos !== whitespacePos + 1 ) {
179- token . nodes = [
180- {
181- type : "word" ,
182- sourceIndex : pos ,
183- value : value . slice ( pos , whitespacePos + 1 )
184- }
185- ] ;
186+ if ( parenthesesOpenPos < whitespacePos ) {
187+ if ( pos !== whitespacePos + 1 ) {
188+ token . nodes = [
189+ {
190+ type : "word" ,
191+ sourceIndex : pos ,
192+ value : value . slice ( pos , whitespacePos + 1 )
193+ }
194+ ] ;
195+ } else {
196+ token . nodes = [ ] ;
197+ }
198+ if ( token . unclosed && whitespacePos + 1 !== next ) {
199+ token . after = "" ;
200+ token . nodes . push ( {
201+ type : "space" ,
202+ sourceIndex : whitespacePos + 1 ,
203+ value : value . slice ( whitespacePos + 1 , next )
204+ } ) ;
205+ } else {
206+ token . after = value . slice ( whitespacePos + 1 , next ) ;
207+ }
186208 } else {
187- token . nodes = [ ] ;
188- }
189- if ( token . unclosed && whitespacePos + 1 !== next ) {
190209 token . after = "" ;
191- token . nodes . push ( {
192- type : "space" ,
193- sourceIndex : whitespacePos + 1 ,
194- value : value . slice ( whitespacePos + 1 , next )
195- } ) ;
196- } else {
197- token . after = value . slice ( whitespacePos + 1 , next ) ;
210+ token . nodes = [ ] ;
198211 }
199212 pos = next + 1 ;
200213 code = value . charCodeAt ( pos ) ;
0 commit comments