Skip to content

Commit 35e2821

Browse files
committed
Reorganize code for smaller size
1 parent 1bddae7 commit 35e2821

File tree

1 file changed

+43
-38
lines changed

1 file changed

+43
-38
lines changed

src/build.mjs

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export const build = (statics) => {
4444
let buffer = '';
4545
let quote = '';
4646
let current = [0];
47-
let char, propName, idx;
47+
let char, propName;
4848

4949
const commit = field => {
5050
if (mode === MODE_TEXT && (field || (buffer = buffer.replace(/^\s*\n\s*|\s*\n\s*$/g,'')))) {
@@ -78,48 +78,53 @@ export const build = (statics) => {
7878
for (let j=0; j<statics[i].length; j++) {
7979
char = statics[i][j];
8080

81-
if (mode === MODE_TEXT && char === '<') {
82-
// commit buffer
83-
commit();
84-
current = [current];
85-
mode = MODE_TAGNAME;
86-
}
87-
else if (mode !== MODE_TEXT && (char === quote || !quote) && (idx = '\'">=/\t\n\r '.indexOf(char)) >= 0) {
88-
if (idx < 2) {
89-
// char === '"' || char === "'"
90-
quote = quote ? '' : char;
91-
}
92-
else if (idx === 2) {
93-
// char === '>'
81+
if (mode === MODE_TEXT) {
82+
if (char === '<') {
83+
// commit buffer
9484
commit();
95-
mode = MODE_TEXT;
85+
current = [current];
86+
mode = MODE_TAGNAME;
9687
}
97-
else if (idx === 3) {
98-
// char === '='
99-
if (mode) {
100-
mode = MODE_ATTRIBUTE;
101-
propName = buffer;
102-
buffer = '';
103-
}
88+
else {
89+
buffer += char;
10490
}
105-
else if (idx === 4) {
106-
// char === '/'
107-
if (mode) {
108-
commit();
109-
if (mode === MODE_TAGNAME) {
110-
current = current[0];
111-
}
112-
mode = current;
113-
(current = current[0]).push(0, mode, CHILD_RECURSE);
114-
mode = MODE_SLASH;
115-
}
91+
}
92+
else if (quote) {
93+
if (char === quote) {
94+
quote = '';
11695
}
117-
else if (mode) {
118-
// char is a whitespace
119-
// <a disabled>
120-
commit();
121-
mode = MODE_WHITESPACE;
96+
else {
97+
buffer += char;
98+
}
99+
}
100+
else if (char === '"' || char === "'") {
101+
quote = char;
102+
}
103+
else if (char === '>') {
104+
commit();
105+
mode = MODE_TEXT;
106+
}
107+
else if (!mode) {
108+
// Ignore everything until the tag ends
109+
}
110+
else if (char === '=') {
111+
mode = MODE_ATTRIBUTE;
112+
propName = buffer;
113+
buffer = '';
114+
}
115+
else if (char === '/') {
116+
commit();
117+
if (mode === MODE_TAGNAME) {
118+
current = current[0];
122119
}
120+
mode = current;
121+
(current = current[0]).push(0, mode, CHILD_RECURSE);
122+
mode = MODE_SLASH;
123+
}
124+
else if (char === ' ' || char === '\t' || char === '\n' || char === '\r') {
125+
// <a disabled>
126+
commit();
127+
mode = MODE_WHITESPACE;
123128
}
124129
else {
125130
buffer += char;

0 commit comments

Comments
 (0)