Sha256: a7b7544b2f8c35510674b9d1b3793d55200fc1efa65b6099f1932a2950a776a1

Contents?: true

Size: 1.14 KB

Versions: 138

Compression:

Stored size: 1.14 KB

Contents

'use strict';

// See http://www.robvanderwoude.com/escapechars.php
const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;

function escapeCommand(arg) {
    // Escape meta chars
    arg = arg.replace(metaCharsRegExp, '^$1');

    return arg;
}

function escapeArgument(arg, doubleEscapeMetaChars) {
    // Convert to string
    arg = `${arg}`;

    // Algorithm below is based on https://qntm.org/cmd

    // Sequence of backslashes followed by a double quote:
    // double up all the backslashes and escape the double quote
    arg = arg.replace(/(\\*)"/g, '$1$1\\"');

    // Sequence of backslashes followed by the end of the string
    // (which will become a double quote later):
    // double up all the backslashes
    arg = arg.replace(/(\\*)$/, '$1$1');

    // All other backslashes occur literally

    // Quote the whole thing:
    arg = `"${arg}"`;

    // Escape meta chars
    arg = arg.replace(metaCharsRegExp, '^$1');

    // Double escape meta chars if necessary
    if (doubleEscapeMetaChars) {
        arg = arg.replace(metaCharsRegExp, '^$1');
    }

    return arg;
}

module.exports.command = escapeCommand;
module.exports.argument = escapeArgument;

Version data entries

138 entries across 136 versions & 16 rubygems

Version Path
immosquare-cleaner-0.1.51 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.50 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.49 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.48 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.47 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.46 node_modules/cross-spawn/lib/util/escape.js
pcp-server-ruby-sdk-0.0.6 node_modules/cross-spawn/lib/util/escape.js
pcp-server-ruby-sdk-0.1.0 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.45 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.44 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.43 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.42 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.41 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.40 node_modules/cross-spawn/lib/util/escape.js
wice_grid-7.1.0 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.39 node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.38 node_modules/cross-spawn/lib/util/escape.js
optimacms-0.1.61 spec/dummy/node_modules/webpack-cli/node_modules/cross-spawn/lib/util/escape.js
optimacms-0.1.61 spec/dummy/node_modules/execa/node_modules/cross-spawn/lib/util/escape.js
immosquare-cleaner-0.1.32 node_modules/cross-spawn/lib/util/escape.js