HtmlToken
class HtmlToken
The abstract base class of any HTML token.
using AngleSharp.Extensions;
using AngleSharp.Html;
namespace AngleSharp.Parser.Html
{
internal class HtmlToken
{
private readonly HtmlTokenType _type;
private readonly TextPosition _position;
private string _name;
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 TextPosition Position => _position;
public bool IsHtmlCompatible {
get {
if (_type != HtmlTokenType.StartTag)
return _type == HtmlTokenType.Character;
return true;
}
}
public bool IsSvg => IsStartTag(TagNames.Svg);
public bool IsMathCompatible {
get {
if (IsStartTag("mglyph") || IsStartTag("malignmark"))
return _type == HtmlTokenType.Character;
return true;
}
}
public HtmlTokenType Type => _type;
public HtmlToken(HtmlTokenType type, TextPosition position)
: this(type, position, null)
{
}
public HtmlToken(HtmlTokenType type, TextPosition position, string name)
{
_type = type;
_position = position;
_name = name;
}
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 (_name.Has('\n', 0))
_name = _name.Substring(1);
}
public HtmlTagToken AsTag()
{
return (HtmlTagToken)this;
}
public bool IsStartTag(string name)
{
if (_type == HtmlTokenType.StartTag)
return _name.Is(name);
return false;
}
}
}