Attr
Represents a generic node attribute.
using AngleSharp.Dom.Collections;
using AngleSharp.Html;
using System;
using System.Diagnostics;
namespace AngleSharp.Dom
{
[DebuggerStepThrough]
internal sealed class Attr : IAttr, IEquatable<IAttr>
{
private readonly string _localName;
private readonly string _prefix;
private readonly string _namespace;
private string _value;
private NamedNodeMap _container;
internal NamedNodeMap Container {
get {
return _container;
}
set {
_container = value;
}
}
public string Prefix => _prefix;
public bool IsId {
get {
if (_prefix == null)
return string.Equals(_localName, 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;
if (_container != null)
_container.RaiseChangedEvent(this, value, value2);
}
}
public string LocalName => _localName;
public string NamespaceUri => _namespace;
internal Attr(string localName)
: this(localName, string.Empty)
{
}
internal Attr(string localName, string value)
{
_localName = localName;
_value = value;
}
internal Attr(string prefix, string localName, string value, string namespaceUri)
{
_prefix = prefix;
_localName = localName;
_value = value;
_namespace = namespaceUri;
}
public bool Equals(IAttr other)
{
if (string.Equals(Prefix, other.Prefix, StringComparison.Ordinal) && string.Equals(NamespaceUri, other.NamespaceUri, StringComparison.Ordinal))
return string.Equals(Value, other.Value, StringComparison.Ordinal);
return false;
}
public override int GetHashCode()
{
int num = 1;
num = num * 31 + _localName.GetHashCode();
num = num * 31 + _value.GetHashCode();
num = num * 31 + (_namespace ?? "").GetHashCode();
return num * 31 + (_prefix ?? "").GetHashCode();
}
}
}