// handles data in title, textarea etc
            public override void Read(Tokeniser t, CharacterReader r)
            {
                switch (r.Current)
                {
                case '&':
                    t.AdvanceTransition(CharacterReferenceInRcdata);
                    break;

                case '<':
                    t.AdvanceTransition(RcdataLessthanSign);
                    break;

                case nullChar:
                    t.Error(this);
                    r.Advance();
                    t.Emit(replacementChar);
                    break;

                case eof:
                    t.Emit(Token.EOF.Instance);
                    break;

                default:
                    string data = r.ConsumeToAny('&', '<', nullChar);
                    t.Emit(data);
                    break;
                }
            }
            public override 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);
                    break;
                }
            }
            public override void Read(Tokeniser t, CharacterReader r)
            {
                if (r.IsEmpty)
                {
                    t.EofError(this);
                    t.doctypePending.forceQuirks = true;
                    t.EmitDoctypePending();
                    t.Transition(Data);
                    return;
                }

                if (r.MatchesAny('\t', '\n', '\f', ' '))
                {
                    r.Advance(); // ignore whitespace
                }
                else 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);
                }
            }
            public override void Read(Tokeniser t, CharacterReader r)
            {
                char c = r.Current;

                switch (c)
                {
                case '-':
                    t.AdvanceTransition(CommentEndDash);
                    break;

                case nullChar:
                    t.Error(this);
                    r.Advance();
                    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));
                    break;
                }
            }
Beispiel #5
0
            public override 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);
                    break;
                }
            }
Beispiel #6
0
            public override void Read(Tokeniser t, CharacterReader r)
            {
                switch (r.Current)
                {
                case nullChar:
                    t.Error(this);
                    r.Advance();
                    t.Emit(replacementChar);
                    break;

                case eof:
                    t.Emit(Token.EOF.Instance);
                    break;

                default:
                    string data = r.ConsumeTo(nullChar);
                    t.Emit(data);
                    break;
                }
            }
Beispiel #7
0
 public void AdvanceTransition(TokeniserState state)
 {
     reader.Advance();
     this.state = state;
 }