Skip to content

Commit fcb2e1a

Browse files
committed
[Refactor] parse: use slice over substr, cache some values
1 parent ecf2a60 commit fcb2e1a

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

parse.js

+12-10
Original file line numberDiff line numberDiff line change
@@ -116,28 +116,30 @@ function parseInternal(string, env, opts) {
116116
i += 1;
117117
var varend;
118118
var varname;
119-
// debugger
120-
if (s.charAt(i) === '{') {
119+
var char = s.charAt(i);
120+
121+
if (char === '{') {
121122
i += 1;
122123
if (s.charAt(i) === '}') {
123-
throw new Error('Bad substitution: ' + s.substr(i - 2, 3));
124+
throw new Error('Bad substitution: ' + s.slice(i - 2, i + 1));
124125
}
125126
varend = s.indexOf('}', i);
126127
if (varend < 0) {
127-
throw new Error('Bad substitution: ' + s.substr(i));
128+
throw new Error('Bad substitution: ' + s.slice(i));
128129
}
129-
varname = s.substr(i, varend - i);
130+
varname = s.slice(i, varend);
130131
i = varend;
131-
} else if ((/[*@#?$!_-]/).test(s.charAt(i))) {
132-
varname = s.charAt(i);
132+
} else if ((/[*@#?$!_-]/).test(char)) {
133+
varname = char;
133134
i += 1;
134135
} else {
135-
varend = s.substr(i).match(/[^\w\d_]/);
136+
var slicedFromI = s.slice(i);
137+
varend = slicedFromI.match(/[^\w\d_]/);
136138
if (!varend) {
137-
varname = s.substr(i);
139+
varname = slicedFromI;
138140
i = s.length;
139141
} else {
140-
varname = s.substr(i, varend.index);
142+
varname = slicedFromI.slice(0, varend.index);
141143
i += varend.index - 1;
142144
}
143145
}

0 commit comments

Comments
 (0)