Skip to content

Commit 0608217

Browse files
committed
Optimize instruction arrays
1 parent 35e2821 commit 0608217

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/build.mjs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ const MODE_ATTRIBUTE = 4;
1313
export const evaluate = (h, current, fields, args) => {
1414
for (let i = 1; i < current.length; i++) {
1515
const field = current[i++];
16-
const value = field ? fields[field] : current[i];
16+
const value = typeof field === 'number' ? fields[field] : field;
1717

18-
if (current[++i] === TAG_SET) {
18+
if (current[i] === TAG_SET) {
1919
args[0] = value;
2020
}
2121
else if (current[i] === PROPS_SET) {
@@ -48,20 +48,20 @@ export const build = (statics) => {
4848

4949
const commit = field => {
5050
if (mode === MODE_TEXT && (field || (buffer = buffer.replace(/^\s*\n\s*|\s*\n\s*$/g,'')))) {
51-
current.push(field, buffer, CHILD_APPEND);
51+
current.push(field || buffer, CHILD_APPEND);
5252
}
5353
else if (mode === MODE_TAGNAME && (field || buffer)) {
54-
current.push(field, buffer, TAG_SET);
54+
current.push(field || buffer, TAG_SET);
5555
mode = MODE_WHITESPACE;
5656
}
5757
else if (mode === MODE_WHITESPACE && buffer === '...' && field) {
58-
current.push(field, 0, PROPS_ASSIGN);
58+
current.push(field, PROPS_ASSIGN);
5959
}
6060
else if (mode === MODE_WHITESPACE && buffer && !field) {
61-
current.push(0, true, PROPS_SET, buffer);
61+
current.push(true, PROPS_SET, buffer);
6262
}
6363
else if (mode === MODE_ATTRIBUTE && propName) {
64-
current.push(field, buffer, PROPS_SET, propName);
64+
current.push(field || buffer, PROPS_SET, propName);
6565
propName = '';
6666
}
6767
buffer = '';
@@ -118,7 +118,7 @@ export const build = (statics) => {
118118
current = current[0];
119119
}
120120
mode = current;
121-
(current = current[0]).push(0, mode, CHILD_RECURSE);
121+
(current = current[0]).push(mode, CHILD_RECURSE);
122122
mode = MODE_SLASH;
123123
}
124124
else if (char === ' ' || char === '\t' || char === '\n' || char === '\r') {

0 commit comments

Comments
 (0)