void read(Tokeniser t, CharacterReader r) {
   if (r.matchesLetter()) {
     t.createTagPending(false);
     t.tagPending.appendTagName(Character.toLowerCase(r.current()));
     t.dataBuffer.append(r.current());
     t.advanceTransition(ScriptDataEscapedEndTagName);
   } else {
     t.emit("</");
     t.transition(ScriptDataEscaped);
   }
 }
 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) {
   char c = r.current();
   switch (c) {
     case '-':
       t.emit(c);
       t.advanceTransition(ScriptDataDoubleEscapedDash);
       break;
     case '<':
       t.emit(c);
       t.advanceTransition(ScriptDataDoubleEscapedLessthanSign);
       break;
     case nullChar:
       t.error(this);
       r.advance();
       t.emit(replacementChar);
       break;
     case eof:
       t.eofError(this);
       t.transition(Data);
       break;
     default:
       String data = r.consumeToAny('-', '<', nullChar);
       t.emit(data);
   }
 }
    void read(Tokeniser t, CharacterReader r) {
      if (r.isEmpty()) {
        t.eofError(this);
        t.transition(Data);
        return;
      }

      switch (r.current()) {
        case '-':
          t.emit('-');
          t.advanceTransition(ScriptDataEscapedDash);
          break;
        case '<':
          t.advanceTransition(ScriptDataEscapedLessthanSign);
          break;
        case nullChar:
          t.error(this);
          r.advance();
          t.emit(replacementChar);
          break;
        default:
          String data = r.consumeToAny('-', '<', nullChar);
          t.emit(data);
      }
    }
 void read(Tokeniser t, CharacterReader r) {
   switch (r.current()) {
     case nullChar:
       t.error(this);
       r.advance();
       t.emit(replacementChar);
       break;
     case eof:
       t.emit(new Token.EOF());
       break;
     default:
       String data = r.consumeTo(nullChar);
       t.emit(data);
       break;
   }
 }
 void read(Tokeniser t, CharacterReader r) {
   switch (r.current()) {
     case '<':
       t.advanceTransition(ScriptDataLessthanSign);
       break;
     case nullChar:
       t.error(this);
       r.advance();
       t.emit(replacementChar);
       break;
     case eof:
       t.emit(new Token.EOF());
       break;
     default:
       String data = r.consumeToAny('<', nullChar);
       t.emit(data);
       break;
   }
 }
示例#7
0
 void read(Tokeniser t, CharacterReader r) {
   char c = r.current();
   switch (c) {
     case '-':
       t.advanceTransition(CommentEndDash);
       break;
     case nullChar:
       t.error(this);
       t.commentPending.data.append(replacementChar);
       break;
     case eof:
       t.eofError(this);
       t.emitCommentPending();
       t.transition(Data);
       break;
     default:
       t.commentPending.data.append(r.consumeToAny('-', nullChar));
   }
 }
 // in data state, gather characters until a character reference or tag is found
 void read(Tokeniser t, CharacterReader r) {
   switch (r.current()) {
     case '&':
       t.advanceTransition(CharacterReferenceInData);
       break;
     case '<':
       t.advanceTransition(TagOpen);
       break;
     case nullChar:
       t.error(this); // NOT replacement character (oddly?)
       t.emit(r.consume());
       break;
     case eof:
       t.emit(new Token.EOF());
       break;
     default:
       String data = r.consumeToAny('&', '<', nullChar);
       t.emit(data);
       break;
   }
 }
 // from < in data
 void read(Tokeniser t, CharacterReader r) {
   switch (r.current()) {
     case '!':
       t.advanceTransition(MarkupDeclarationOpen);
       break;
     case '/':
       t.advanceTransition(EndTagOpen);
       break;
     case '?':
       t.advanceTransition(BogusComment);
       break;
     default:
       if (r.matchesLetter()) {
         t.createTagPending(true);
         t.transition(TagName);
       } else {
         t.error(this);
         t.emit('<'); // char that got us here
         t.transition(Data);
       }
       break;
   }
 }