AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.6.1" />

 HtmlToken

abstract class 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; protected string _name; public static HtmlEndOfFileToken EOF => eof ?? (eof = new HtmlEndOfFileToken()); public bool IsEmpty => string.IsNullOrEmpty(_name); public bool HasContent { get { for (int i = 0; i < _name.Length; i++) { if (!_name[i].IsSpaceCharacter()) return true; } return false; } } public string Name { get { return _name; } set { _name = value; } } public string Data => _name; public bool IsHtmlCompatible { get { if (_type != HtmlTokenType.StartTag) return _type == HtmlTokenType.Character; return true; } } public bool IsSvg => IsStartTag(Tags.Svg); public bool IsEof => _type == HtmlTokenType.EOF; public bool IsMathCompatible { get { if (IsStartTag("mglyph") || IsStartTag("malignmark")) return _type == HtmlTokenType.Character; return true; } } 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 string TrimStart() { int num = 0; for (num = 0; num < _name.Length && _name[num].IsSpaceCharacter(); num++) { } string result = _name.Substring(0, num); _name = _name.Substring(num); return result; } public void RemoveNewLine() { if (!string.IsNullOrEmpty(_name) && _name[0] == '\n') _name = _name.Substring(1); } public HtmlTagToken AsTag() { return (HtmlTagToken)this; } public bool IsStartTag(string name) { if (_type == HtmlTokenType.StartTag) return _name.Equals(name); return false; } } }