void read(Tokeniser t, CharacterReader r) {
   if (r.matches('-')) {
     t.emit('-');
     t.advanceTransition(ScriptDataEscapedDashDash);
   } else {
     t.transition(ScriptData);
   }
 }
 void read(Tokeniser t, CharacterReader r) {
   if (r.matches('/')) {
     t.emit('/');
     t.createTempBuffer();
     t.advanceTransition(ScriptDataDoubleEscapeEnd);
   } else {
     t.transition(ScriptDataDoubleEscaped);
   }
 }
 void read(Tokeniser t, CharacterReader r) {
   if (r.matches('/')) {
     t.createTempBuffer();
     t.advanceTransition(RawtextEndTagOpen);
   } else {
     t.emit('<');
     t.transition(Rawtext);
   }
 }
 void read(Tokeniser t, CharacterReader r) {
   if (r.matchesLetter()) {
     t.createTempBuffer();
     t.dataBuffer.append(Character.toLowerCase(r.current()));
     t.emit("<" + r.current());
     t.advanceTransition(ScriptDataDoubleEscapeStart);
   } else if (r.matches('/')) {
     t.createTempBuffer();
     t.advanceTransition(ScriptDataEscapedEndTagOpen);
   } else {
     t.emit('<');
     t.transition(ScriptDataEscaped);
   }
 }
 void read(Tokeniser t, CharacterReader r) {
   if (r.isEmpty()) {
     t.eofError(this);
     t.emit("</");
     t.transition(Data);
   } else if (r.matchesLetter()) {
     t.createTagPending(false);
     t.transition(TagName);
   } else if (r.matches('>')) {
     t.error(this);
     t.advanceTransition(Data);
   } else {
     t.error(this);
     t.advanceTransition(BogusComment);
   }
 }
 // from < in rcdata
 void read(Tokeniser t, CharacterReader r) {
   if (r.matches('/')) {
     t.createTempBuffer();
     t.advanceTransition(RCDATAEndTagOpen);
   } else if (r.matchesLetter() && !r.containsIgnoreCase("</" + t.appropriateEndTagName())) {
     // diverge from spec: got a start tag, but there's no appropriate end tag (</title>), so
     // rather than
     // consuming to EOF; break out here
     t.tagPending = new Token.EndTag(t.appropriateEndTagName());
     t.emitTagPending();
     r.unconsume(); // undo "<"
     t.transition(Data);
   } else {
     t.emit("<");
     t.transition(Rcdata);
   }
 }
Beispiel #7
0
 void read(Tokeniser t, CharacterReader r) {
   if (r.isEmpty()) {
     t.eofError(this);
     t.doctypePending.forceQuirks = true;
     t.emitDoctypePending();
     t.transition(Data);
     return;
   }
   if (r.matches('>')) {
     t.emitDoctypePending();
     t.advanceTransition(Data);
   } else if (r.matchConsumeIgnoreCase("PUBLIC")) {
     t.transition(AfterDoctypePublicKeyword);
   } else if (r.matchConsumeIgnoreCase("SYSTEM")) {
     t.transition(AfterDoctypeSystemKeyword);
   } else {
     t.error(this);
     t.doctypePending.forceQuirks = true;
     t.advanceTransition(BogusDoctype);
   }
 }