| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | 
							- '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;
 
 
  |