Speed up tokenizer

This commit is contained in:
Andrey Sitnik
2015-03-14 22:02:50 +03:00
parent 7f9398181d
commit bd671cfec7
+13 -10
View File
@@ -19,14 +19,6 @@ let singleQuote = "'".charCodeAt(0),
wordEnd = /[ \n\t\r\(\)\{\}:;@!'"\\]|\/(?=\*)/g,
badBracket = /.[\\\/\("'\n]/;
var spaces = {
[cr]: true,
[tab]: true,
[feed]: true,
[space]: true,
[newline]: true
};
export default function tokenize(input) {
let tokens = [];
let css = input.css.valueOf();
@@ -70,7 +62,11 @@ export default function tokenize(input) {
offset = next;
line += 1;
}
} while ( spaces[code] );
} while ( code == space ||
code == newline ||
code == tab ||
code == cr ||
code == feed );
tokens.push(['space', css.slice(pos, next)]);
pos = next - 1;
@@ -157,7 +153,14 @@ export default function tokenize(input) {
escape = !escape;
}
code = css.charCodeAt(next + 1);
if ( escape && !spaces[code] ) next += 1;
if ( escape && (code != slash &&
code != space &&
code != newline &&
code != tab &&
code != cr &&
code != feed ) ) {
next += 1;
}
tokens.push(['word', css.slice(pos, next + 1),
line, pos - offset,
line, next - offset