Example #1
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);
   }
 }
 void read(Tokeniser t, CharacterReader r) {
   if (r.matchConsume("--")) {
     t.createCommentPending();
     t.transition(CommentStart);
   } else if (r.matchConsumeIgnoreCase("DOCTYPE")) {
     t.transition(Doctype);
   } else if (r.matchConsume("[CDATA[")) {
     // todo: should actually check current namepspace, and only non-html allows cdata. until
     // namespace
     // is implemented properly, keep handling as cdata
     // } else if (!t.currentNodeInHtmlNS() && r.matchConsume("[CDATA[")) {
     t.transition(CdataSection);
   } else {
     t.error(this);
     t.advanceTransition(
         BogusComment); // advance so this character gets in bogus comment data's rewind
   }
 }