CssRule
Represents a CSS rule.
using AngleSharp.Css;
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal abstract class CssRule : ICssRule, IStyleFormattable
{
private readonly CssRuleType _type;
private readonly CssParser _parser;
private ICssStyleSheet _ownerSheet;
private ICssRule _parentRule;
public string CssText {
get {
return ToCss();
}
set {
CssRule cssRule = _parser.ParseRule(value);
if (cssRule == null)
throw new DomException(DomError.Syntax);
if (cssRule.Type != _type)
throw new DomException(DomError.InvalidModification);
ReplaceWith(cssRule);
}
}
public ICssRule Parent {
get {
return _parentRule;
}
internal set {
_parentRule = value;
}
}
public ICssStyleSheet Owner {
get {
return _ownerSheet;
}
internal set {
_ownerSheet = value;
}
}
public CssRuleType Type => _type;
internal CssParser Parser => _parser;
internal CssRule(CssRuleType type, CssParser parser)
{
_type = type;
_parser = parser;
}
public string ToCss()
{
return ToCss(CssStyleFormatter.Instance);
}
public abstract string ToCss(IStyleFormatter formatter);
protected abstract void ReplaceWith(ICssRule rule);
}
}