CssNamespaceRule
Represents an @namespace rule.
using AngleSharp.Extensions;
namespace AngleSharp.Dom.Css
{
internal sealed class CssNamespaceRule : CssRule, ICssNamespaceRule, ICssRule
{
private string _namespaceURI;
private string _prefix;
public string NamespaceUri {
get {
return _namespaceURI;
}
set {
CheckValidity();
_namespaceURI = (value ?? string.Empty);
}
}
public string Prefix {
get {
return _prefix;
}
set {
CheckValidity();
_prefix = (value ?? string.Empty);
}
}
internal CssNamespaceRule()
: base(CssRuleType.Namespace)
{
}
protected override void ReplaceWith(ICssRule rule)
{
CssNamespaceRule cssNamespaceRule = rule as CssNamespaceRule;
_namespaceURI = cssNamespaceRule._namespaceURI;
_prefix = cssNamespaceRule._prefix;
}
private void CheckValidity()
{
ICssRuleList cssRuleList = base.Owner?.Rules;
if (cssRuleList != null) {
foreach (ICssRule item in cssRuleList) {
if (item.Type != CssRuleType.Charset && item.Type != CssRuleType.Import && item.Type != CssRuleType.Namespace)
throw new DomException(ErrorCode.InvalidState);
}
}
}
protected override string ToCss()
{
string str = string.IsNullOrEmpty(_prefix) ? string.Empty : (_prefix + " ");
return "@namespace " + str + _namespaceURI.CssUrl() + ";";
}
}
}