function self.ready()
{
var tz = new Tokenizer( $(plaintext), #source );
const KEYWORDS = {
"type" :true, "function":true, "var" :true,"if" :true,
"else" :true, "while" :true, "return" :true,"for" :true,
"break" :true, "continue":true, "do" :true,"switch" :true,
"case" :true, "default" :true, "null" :true,"super" :true,
"new" :true, "try" :true, "catch" :true,"finally" :true,
"throw" :true, "typeof" :true, "instanceof":true,"in" :true,
"property" :true, "const" :true, "get" :true,"set" :true,
"include" :true, "like" :true, "class" :true,"namespace":true,
"this" :true, "assert" :true, "delete" :true,"otherwise":true,
"with" :true, "__FILE__":true, "__LINE__" :true,"__TRACE__":true,
"debug" :true };
const LITERALS = { "true": true, "false": true, "null": true, "undefined": true };
var apply = Selection.applyMark; //shortcut reference
while(var tt = tz.token())
switch(tt) {
case #NUMBER: apply(tz.tokenStart,tz.tokenEnd,"number"); break;
case #NUMBER-UNIT: apply(tz.tokenStart,tz.tokenEnd,"number-unit"); break;
case #STRING: apply(tz.tokenStart,tz.tokenEnd,"string"); break;
case #NAME:
{
var val = tz.value;
if( val[0] == '#' )
apply(tz.tokenStart,tz.tokenEnd, "symbol");
else if(KEYWORDS[val])
apply(tz.tokenStart,tz.tokenEnd, "keyword");
else if(LITERALS[val])
apply(tz.tokenStart,tz.tokenEnd, "literal");
break;
}
case #COMMENT: apply(tz.tokenStart,tz.tokenEnd,"comment"); break;
}
}