public void Advance() { CharacterReader r = new CharacterReader("One Two Three"); Assert.AreEqual('O', r.Consume()); r.Advance(); Assert.AreEqual('e', r.Consume()); }
public void AdvanceTransition(TokeniserState state) { _reader.Advance(); this._state = state; }
internal override void Read(Tokeniser t, CharacterReader r) { char c = r.Current(); switch (c) { case '-': t.Emit(c); t.AdvanceTransition(TokeniserState.ScriptDataDoubleEscapedDash); break; case '<': t.Emit(c); t.AdvanceTransition(TokeniserState.ScriptDataDoubleEscapedLessthanSign ); break; case TokeniserState.nullChar: t.Error(this); r.Advance(); t.Emit(TokeniserState.replacementChar); break; case TokeniserState.eof: t.EofError(this); t.Transition(TokeniserState.Data); break; default: string data = r.ConsumeToAny('-', '<', TokeniserState.nullChar); t.Emit(data); break; } }
/// handles data in title, textarea etc internal override void Read(Tokeniser t, CharacterReader r) { switch (r.Current()) { case '&': t.AdvanceTransition(TokeniserState.CharacterReferenceInRcdata); break; case '<': t.AdvanceTransition(TokeniserState.RcdataLessthanSign); break; case TokeniserState.nullChar: t.Error(this); r.Advance(); t.Emit(TokeniserState.replacementChar); break; case TokeniserState.eof: t.Emit(new Token.EOF()); break; default: string data = r.ConsumeToAny('&', '<', TokeniserState.nullChar); t.Emit(data); break; } }
internal override void Read(Tokeniser t, CharacterReader r) { switch (r.Current()) { case TokeniserState.nullChar: t.Error(this); r.Advance(); t.Emit(TokeniserState.replacementChar); break; case TokeniserState.eof: t.Emit(new Token.EOF()); break; default: string data = r.ConsumeTo(TokeniserState.nullChar); t.Emit(data); break; } }
internal override void Read(Tokeniser t, CharacterReader r) { if (r.IsEmpty()) { t.EofError(this); t.doctypePending.forceQuirks = true; t.EmitDoctypePending(); t.Transition(TokeniserState.Data); return; } if (r.MatchesAny('\t', '\n', '\r', '\f', ' ')) { r.Advance(); // ignore whitespace } else if (r.Matches('>')) { t.EmitDoctypePending(); t.AdvanceTransition(TokeniserState.Data); } else if (r.MatchConsumeIgnoreCase("PUBLIC")) { t.Transition(TokeniserState.AfterDoctypePublicKeyword); } else if (r.MatchConsumeIgnoreCase("SYSTEM")) { t.Transition(TokeniserState.AfterDoctypeSystemKeyword); } else { t.Error(this); t.doctypePending.forceQuirks = true; t.AdvanceTransition(TokeniserState.BogusDoctype); } }
internal override void Read(Tokeniser t, CharacterReader r) { char c = r.Current(); switch (c) { case '-': t.AdvanceTransition(TokeniserState.CommentEndDash); break; case TokeniserState.nullChar: t.Error(this); r.Advance(); t.commentPending.data.Append(TokeniserState.replacementChar); break; case TokeniserState.eof: t.EofError(this); t.EmitCommentPending(); t.Transition(TokeniserState.Data); break; default: t.commentPending.data.Append(r.ConsumeToAny('-', TokeniserState.nullChar )); break; } }