diff --git a/lib/tokenize-arg-string.js b/lib/tokenize-arg-string.js index 23d39e1f..70154425 100644 --- a/lib/tokenize-arg-string.js +++ b/lib/tokenize-arg-string.js @@ -3,16 +3,20 @@ module.exports = function (argString) { if (Array.isArray(argString)) return argString var i = 0 + var prevC = null var c = null var opening = null var args = [] for (var ii = 0; ii < argString.length; ii++) { + prevC = c c = argString.charAt(ii) // split on spaces unless we're in quotes. if (c === ' ' && !opening) { - i++ + if (!(prevC === ' ')) { + i++ + } continue } diff --git a/test/tokenize-arg-string.js b/test/tokenize-arg-string.js index 9b9f9a06..63ad2954 100644 --- a/test/tokenize-arg-string.js +++ b/test/tokenize-arg-string.js @@ -3,6 +3,7 @@ var tokenizeArgString = require('../lib/tokenize-arg-string') require('chai').should() +var expect = require('chai').expect describe('TokenizeArgString', function () { it('handles unquoted string', function () { @@ -37,4 +38,11 @@ describe('TokenizeArgString', function () { args[1].should.equal('hello \'world\'') args[2].should.equal('--bar=foo "bar"') }) + + it('multiple spaces only counted in quotes', function () { + var args = tokenizeArgString('foo bar "foo bar"') + args[0].should.equal('foo') + expect(args[1]).equal('bar') + expect(args[2]).equal('foo bar') + }) })