| 'use strict'; | 
|   | 
| function escapeArgument(arg, quote) { | 
|     // Convert to string | 
|     arg = '' + arg; | 
|   | 
|     // If we are not going to quote the argument, | 
|     // escape shell metacharacters, including double and single quotes: | 
|     if (!quote) { | 
|         arg = arg.replace(/([()%!^<>&|;,"'\s])/g, '^$1'); | 
|     } else { | 
|         // 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 + '"'; | 
|     } | 
|   | 
|     return arg; | 
| } | 
|   | 
| module.exports = escapeArgument; |