Skip to content

Commit 8f0c5c3

Browse files
committed
[Refactor] hoist some vars to module level
1 parent 508e2f9 commit 8f0c5c3

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

parse.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,23 @@
55
var CONTROL = '(?:' + [
66
'\\|\\|', '\\&\\&', ';;', '\\|\\&', '\\<\\(', '\\<\\<\\<', '>>', '>\\&', '<\\&', '[&;()|<>]'
77
].join('|') + ')';
8+
var controlRE = new RegExp('^' + CONTROL + '$');
89
var META = '|&;()<> \\t';
910
var BAREWORD = '(\\\\[\'"' + META + ']|[^\\s\'"' + META + '])+';
1011
var SINGLE_QUOTE = '"((\\\\"|[^"])*?)"';
1112
var DOUBLE_QUOTE = '\'((\\\\\'|[^\'])*?)\'';
13+
var hash = /^#$/;
14+
15+
var SQ = "'";
16+
var DQ = '"';
17+
var DS = '$';
1218

1319
var TOKEN = '';
20+
var mult = Math.pow(16, 8);
1421
for (var i = 0; i < 4; i++) {
15-
TOKEN += (Math.pow(16, 8) * Math.random()).toString(16);
22+
TOKEN += (mult * Math.random()).toString(16);
1623
}
24+
var startsWithToken = new RegExp('^' + TOKEN);
1725

1826
function parseInternal(s, env, opts) {
1927
var chunker = new RegExp([
@@ -52,7 +60,7 @@ function parseInternal(s, env, opts) {
5260
if (commented) {
5361
return void undefined;
5462
}
55-
if (RegExp('^' + CONTROL + '$').test(s)) {
63+
if (controlRE.test(s)) {
5664
return { op: s };
5765
}
5866

@@ -67,9 +75,6 @@ function parseInternal(s, env, opts) {
6775
// 4. quote context can switch mid-token if there is no whitespace
6876
// between the two quote contexts (e.g. all'one'"token" parses as
6977
// "allonetoken")
70-
var SQ = "'";
71-
var DQ = '"';
72-
var DS = '$';
7378
var BS = opts.escape || '\\';
7479
var quote = false;
7580
var esc = false;
@@ -137,9 +142,9 @@ function parseInternal(s, env, opts) {
137142
}
138143
} else if (c === DQ || c === SQ) {
139144
quote = c;
140-
} else if (RegExp('^' + CONTROL + '$').test(c)) {
145+
} else if (controlRE.test(c)) {
141146
return { op: s };
142-
} else if ((/^#$/).test(c)) {
147+
} else if (hash.test(c)) {
143148
commented = true;
144149
if (out.length) {
145150
return [out, { comment: s.slice(i + 1) + match.slice(j + 1).join(' ') }];
@@ -160,10 +165,7 @@ function parseInternal(s, env, opts) {
160165

161166
return out;
162167
}).reduce(function (prev, arg) { // finalize parsed aruments
163-
if (arg === undefined) {
164-
return prev;
165-
}
166-
return prev.concat(arg);
168+
return typeof arg === 'undefined' ? prev : prev.concat(arg);
167169
}, []);
168170
}
169171

@@ -181,7 +183,7 @@ module.exports = function parse(s, env, opts) {
181183
return acc.concat(xs[0]);
182184
}
183185
return acc.concat(xs.filter(Boolean).map(function (x) {
184-
if (RegExp('^' + TOKEN).test(x)) {
186+
if (startsWithToken.test(x)) {
185187
return JSON.parse(x.split(TOKEN)[1]);
186188
}
187189
return x;

0 commit comments

Comments
 (0)