From 29737fe06ac6bb81f774fdf2b1d4f8205cf1afbf Mon Sep 17 00:00:00 2001 From: Mike111177 Date: Tue, 29 Aug 2017 17:58:44 -0400 Subject: [PATCH] Ignore multiple spaces between arguments. --- lib/tokenize-arg-string.js | 4 +++- test/tokenize-arg-string.js | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/tokenize-arg-string.js b/lib/tokenize-arg-string.js index 8081f6d1..873b85a3 100644 --- a/lib/tokenize-arg-string.js +++ b/lib/tokenize-arg-string.js @@ -15,7 +15,9 @@ module.exports = function (argString) { // 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 b66a16d4..0b1e40d1 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 () { @@ -44,4 +45,11 @@ describe('TokenizeArgString', function () { args[0].should.equal('-q') args[1].should.equal('sku="invalid"') }) + + 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') + }) })