HtmlToken
The abstract base class of any HTML token.
using System.Diagnostics;
namespace AngleSharp.Parser.Html
{
[DebuggerStepThrough]
internal abstract class HtmlToken
{
private static HtmlEndOfFileToken eof;
protected HtmlTokenType _type;
public static HtmlEndOfFileToken EOF => eof ?? (eof = new HtmlEndOfFileToken());
public virtual bool IsHtmlCompatible => false;
public bool IsSvg => IsStartTag("svg");
public bool IsEof => _type == HtmlTokenType.EOF;
public virtual bool IsMathCompatible => false;
public HtmlTokenType Type => _type;
[DebuggerStepThrough]
public static HtmlCharacterToken Character(string characters)
{
return new HtmlCharacterToken(characters);
}
[DebuggerStepThrough]
public static HtmlCommentToken Comment(string comment)
{
return new HtmlCommentToken(comment);
}
[DebuggerStepThrough]
public static HtmlDoctypeToken Doctype(bool quirksmode)
{
return new HtmlDoctypeToken(quirksmode);
}
[DebuggerStepThrough]
public static HtmlTagToken OpenTag()
{
HtmlTagToken htmlTagToken = new HtmlTagToken();
htmlTagToken._type = HtmlTokenType.StartTag;
return htmlTagToken;
}
[DebuggerStepThrough]
public static HtmlTagToken CloseTag()
{
HtmlTagToken htmlTagToken = new HtmlTagToken();
htmlTagToken._type = HtmlTokenType.EndTag;
return htmlTagToken;
}
[DebuggerStepThrough]
public static HtmlTagToken OpenTag(string name)
{
HtmlTagToken htmlTagToken = new HtmlTagToken(name);
htmlTagToken._type = HtmlTokenType.StartTag;
return htmlTagToken;
}
[DebuggerStepThrough]
public static HtmlTagToken CloseTag(string name)
{
HtmlTagToken htmlTagToken = new HtmlTagToken(name);
htmlTagToken._type = HtmlTokenType.EndTag;
return htmlTagToken;
}
public HtmlTagToken AsTag()
{
return (HtmlTagToken)this;
}
public bool IsTag(string name)
{
if (_type == HtmlTokenType.StartTag || _type == HtmlTokenType.EndTag)
return IsTagName(name);
return false;
}
public bool IsEndTag(string name)
{
if (_type == HtmlTokenType.EndTag)
return IsTagName(name);
return false;
}
public bool IsEndTagInv(string name)
{
if (_type == HtmlTokenType.EndTag)
return !IsTagName(name);
return false;
}
public bool IsEndTag(string nameA, string nameB)
{
if (_type == HtmlTokenType.EndTag) {
if (!IsTagName(nameA))
return IsTagName(nameB);
return true;
}
return false;
}
public bool IsEndTag(string nameA, string nameB, string nameC)
{
if (_type == HtmlTokenType.EndTag) {
if (!IsTagName(nameA) && !IsTagName(nameB))
return IsTagName(nameC);
return true;
}
return false;
}
public bool IsEndTagInv(string nameA, string nameB, string nameC)
{
if (_type == HtmlTokenType.EndTag && !IsTagName(nameA) && !IsTagName(nameB))
return !IsTagName(nameC);
return false;
}
public bool IsEndTag(string nameA, string nameB, string nameC, string nameD)
{
if (_type == HtmlTokenType.EndTag) {
if (!IsTagName(nameA) && !IsTagName(nameB) && !IsTagName(nameC))
return IsTagName(nameD);
return true;
}
return false;
}
public bool IsEndTagInv(string nameA, string nameB, string nameC, string nameD)
{
if (_type == HtmlTokenType.EndTag && !IsTagName(nameA) && !IsTagName(nameB) && !IsTagName(nameC))
return !IsTagName(nameD);
return false;
}
public bool IsStartTag(string name)
{
if (_type == HtmlTokenType.StartTag)
return IsTagName(name);
return false;
}
public bool IsStartTag(string nameA, string nameB)
{
if (_type == HtmlTokenType.StartTag) {
if (!IsTagName(nameA))
return IsTagName(nameB);
return true;
}
return false;
}
public bool IsStartTag(string nameA, string nameB, string nameC)
{
if (_type == HtmlTokenType.StartTag) {
if (!IsTagName(nameA) && !IsTagName(nameB))
return IsTagName(nameC);
return true;
}
return false;
}
public bool IsStartTag(string nameA, string nameB, string nameC, string nameD)
{
if (_type == HtmlTokenType.StartTag) {
if (!IsTagName(nameA) && !IsTagName(nameB) && !IsTagName(nameC))
return IsTagName(nameD);
return true;
}
return false;
}
public bool IsStartTag(string nameA, string nameB, string nameC, string nameD, string nameE, string nameF)
{
if (_type == HtmlTokenType.StartTag) {
if (!IsTagName(nameA) && !IsTagName(nameB) && !IsTagName(nameC) && !IsTagName(nameD) && !IsTagName(nameE))
return IsTagName(nameF);
return true;
}
return false;
}
public bool IsStartTag(string nameA, string nameB, string nameC, string nameD, string nameE, string nameF, string nameG, string nameH, string nameJ)
{
if (_type == HtmlTokenType.StartTag) {
if (!IsTagName(nameA) && !IsTagName(nameB) && !IsTagName(nameC) && !IsTagName(nameD) && !IsTagName(nameE) && !IsTagName(nameF) && !IsTagName(nameG) && !IsTagName(nameH))
return IsTagName(nameJ);
return true;
}
return false;
}
protected virtual bool IsTagName(string name)
{
return false;
}
}
}