1 | "use strict";
|
2 |
|
3 |
|
4 | const mask = "(\\s+)|--\\s+(.*)|([^\\s\\\"']+)|\\\"([^\\\"]*)\\\"|'([^']*)'";
|
5 |
|
6 | module.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 |
|
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 |
|
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 | };
|