Attr
Represents a generic node attribute.
using AngleSharp.Html;
using System;
using System.Diagnostics;
namespace AngleSharp.Dom
{
[DebuggerStepThrough]
internal sealed class Attr : IAttr, IEquatable<IAttr>
{
private readonly Element _container;
private readonly string _localName;
private readonly string _prefix;
private readonly string _namespace;
private string _value;
public string Prefix => _prefix;
public bool IsId {
get {
if (_prefix == null)
return _localName.Equals(AttributeNames.Id, StringComparison.OrdinalIgnoreCase);
return false;
}
}
public bool Specified => !string.IsNullOrEmpty(_value);
public string Name {
get {
if (_prefix != null)
return _prefix + ":" + _localName;
return _localName;
}
}
public string Value {
get {
return _value;
}
set {
string value2 = _value;
_value = value;
_container.AttributeChanged(_localName, _namespace, value2, false);
}
}
public string LocalName => _localName;
public string NamespaceUri => _namespace;
internal Attr(Element container, string localName)
: this(container, localName, string.Empty)
{
}
internal Attr(Element container, string localName, string value)
{
_container = container;
_localName = localName;
_value = value;
}
internal Attr(Element container, string prefix, string localName, string value, string namespaceUri)
{
_prefix = prefix;
_localName = localName;
_container = container;
_value = value;
_namespace = namespaceUri;
}
public bool Equals(IAttr other)
{
if (other != this) {
if (_value == other.Value)
return _localName == other.Name;
return false;
}
return true;
}
}
}