From cfcc2dcb2ec5a82d93449eb80ec56433c1cfbe8b Mon Sep 17 00:00:00 2001 From: Federico Date: Thu, 24 Sep 2020 04:33:06 -0500 Subject: [PATCH] Avoid using `Array#reduce` (#436) --- lib/command.js | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/lib/command.js b/lib/command.js index 871a314bc6..190ce16530 100644 --- a/lib/command.js +++ b/lib/command.js @@ -9,27 +9,21 @@ const joinCommand = (file, args = []) => { return [file, ...args].join(' '); }; -// Allow spaces to be escaped by a backslash if not meant as a delimiter -const handleEscaping = (tokens, token, index) => { - if (index === 0) { - return [token]; - } - - const previousToken = tokens[tokens.length - 1]; - - if (previousToken.endsWith('\\')) { - return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`]; - } - - return [...tokens, token]; -}; - // Handle `execa.command()` const parseCommand = command => { - return command - .trim() - .split(SPACES_REGEXP) - .reduce(handleEscaping, []); + const tokens = []; + for (const token of command.trim().split(SPACES_REGEXP)) { + // Allow spaces to be escaped by a backslash if not meant as a delimiter + const previousToken = tokens[tokens.length - 1]; + if (previousToken && previousToken.endsWith('\\')) { + // Merge previous token with current one + tokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`; + } else { + tokens.push(token); + } + } + + return tokens; }; module.exports = {