UNPKG

825 BJavaScriptView Raw
1"use strict";
2
3
4const mask = "(\\s+)|--\\s+(.*)|([^\\s\\\"']+)|\\\"([^\\\"]*)\\\"|'([^']*)'";
5
6module.exports = function(str) {
7 var r = new RegExp(mask, "g");
8 var args = [], i = 0;
9 var step, sep, value, quoted;
10
11 while((step = r.exec(str || ""))) {
12 sep = step[1] !== undefined;
13 quoted = step[4] !== undefined || step[5] !== undefined;
14 value = step[3] || step[4] || step[5] || "";
15
16 // pass all after -- as non parsed
17 if(step[2] !== undefined) {
18 args.push("--", step[2]);
19 break;
20 }
21
22 if(sep) {
23 if(args.length)
24 i++;
25 continue;
26 }
27
28 //do not cast explicitly quoted strings
29 if(value !== "" && isFinite(value) && !quoted)
30 value = parseFloat(value);
31 if(args[i])
32 value = String(args[i]) + value;
33 args[i] = value;
34 }
35
36 return args;
37
38};