Blame view

node_modules/shellwords/lib/shellwords.js 1.45 KB
aaac7fed   liuqimichale   add
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  // Generated by CoffeeScript 1.3.3
  (function() {
    var scan;
  
    scan = function(string, pattern, callback) {
      var match, result;
      result = "";
      while (string.length > 0) {
        match = string.match(pattern);
        if (match) {
          result += string.slice(0, match.index);
          result += callback(match);
          string = string.slice(match.index + match[0].length);
        } else {
          result += string;
          string = "";
        }
      }
      return result;
    };
  
    exports.split = function(line) {
      var field, words;
      if (line == null) {
        line = "";
      }
      words = [];
      field = "";
      scan(line, /\s*(?:([^\s\\\'\"]+)|'((?:[^\'\\]|\\.)*)'|"((?:[^\"\\]|\\.)*)"|(\\.?)|(\S))(\s|$)?/, function(match) {
        var dq, escape, garbage, raw, seperator, sq, word;
        raw = match[0], word = match[1], sq = match[2], dq = match[3], escape = match[4], garbage = match[5], seperator = match[6];
        if (garbage != null) {
          throw new Error("Unmatched quote");
        }
        field += word || (sq || dq || escape).replace(/\\(?=.)/, "");
        if (seperator != null) {
          words.push(field);
          return field = "";
        }
      });
      if (field) {
        words.push(field);
      }
      return words;
    };
  
    exports.escape = function(str) {
      if (str == null) {
        str = "";
      }
      if (str == null) {
        return "''";
      }
      return str.replace(/([^A-Za-z0-9_\-.,:\/@\n])/g, "\\$1").replace(/\n/g, "'\n'");
    };
  
  }).call(this);