// from & in data public override void Read(Tokeniser t, CharacterReader r) { char? c = t.ConsumeCharacterReference(null, false); if (c == null) { t.Emit('&'); } else { t.Emit(c.Value); } t.Transition(Data); }
public override void Read(Tokeniser t, CharacterReader r) { string value = r.ConsumeToAny('\t', '\n', '\r', '\f', ' ', '&', '>', _nullChar, '"', '\'', '<', '=', '`'); if (value.Length > 0) { t.TagPending.AppendAttributeValue(value); } char c = r.Consume(); switch (c) { case '\t': case '\n': case '\r': case '\f': case ' ': t.Transition(BeforeAttributeName); break; case '&': char? reference = t.ConsumeCharacterReference('>', true); if (reference != null) { t.TagPending.AppendAttributeValue(reference.Value); } else { t.TagPending.AppendAttributeValue('&'); } break; case '>': t.EmitTagPending(); t.Transition(Data); break; case _nullChar: t.Error(this); t.TagPending.AppendAttributeValue(_replacementChar); break; case _eof: t.EofError(this); t.Transition(Data); break; case '"': case '\'': case '<': case '=': case '`': t.Error(this); t.TagPending.AppendAttributeValue(c); break; // no default, handled in Consume to any above } }
public override void Read(Tokeniser t, CharacterReader r) { string value = r.ConsumeToAny('\'', '&', _nullChar); if (value.Length > 0) { t.TagPending.AppendAttributeValue(value); } char c = r.Consume(); switch (c) { case '\'': t.Transition(AfterAttributeValueQuoted); break; case '&': char? reference = t.ConsumeCharacterReference('\'', true); if (reference != null) { t.TagPending.AppendAttributeValue(reference.Value); } else { t.TagPending.AppendAttributeValue('&'); } break; case _nullChar: t.Error(this); t.TagPending.AppendAttributeValue(_replacementChar); break; case _eof: t.EofError(this); t.Transition(Data); break; // no default, handled in Consume to any above } }