Blame view

node_modules/cross-spawn/lib/util/escapeArgument.js 875 Bytes
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  '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;