public override void Read(Tokeniser t, CharacterReader r) { if (r.MatchesLetter()) { string name = r.ConsumeLetterSequence(); t.tagPending.AppendTagName(name.ToLowerInvariant()); t.dataBuffer.Append(name); return; } char c = r.Consume(); switch (c) { case '\t': case '\n': case '\f': case ' ': if (t.IsAppropriateEndTagToken()) { t.Transition(BeforeAttributeName); } else { AnythingElse(t, r); } break; case '/': if (t.IsAppropriateEndTagToken()) { t.Transition(SelfClosingStartTag); } else { AnythingElse(t, r); } break; case '>': if (t.IsAppropriateEndTagToken()) { t.EmitTagPending(); t.Transition(Data); } else { AnythingElse(t, r); } break; default: AnythingElse(t, r); break; } }
public override void Read(Tokeniser t, CharacterReader r) { if (r.MatchesLetter()) { string name = r.ConsumeLetterSequence(); t.doctypePending.name.Append(name.ToLowerInvariant()); return; } char c = r.Consume(); switch (c) { case '>': t.EmitDoctypePending(); t.Transition(Data); break; case '\t': case '\n': case '\f': case ' ': t.Transition(AfterDoctypeName); break; case nullChar: t.Error(this); t.doctypePending.name.Append(replacementChar); break; case eof: t.EofError(this); t.doctypePending.forceQuirks = true; t.EmitDoctypePending(); t.Transition(Data); break; default: t.doctypePending.name.Append(c); break; } }
public override void Read(Tokeniser t, CharacterReader r) { if (r.MatchesLetter()) { string name = r.ConsumeLetterSequence(); t.dataBuffer.Append(name.ToLowerInvariant()); t.Emit(name); return; } char c = r.Consume(); switch (c) { case '\t': case '\n': case '\f': case ' ': case '/': case '>': if (t.dataBuffer.ToString().Equals("script")) { t.Transition(ScriptDataEscaped); } else { t.Transition(ScriptDataDoubleEscaped); } t.Emit(c); break; default: r.Unconsume(); t.Transition(ScriptDataDoubleEscaped); break; } }