CssStyleRule
Represents a CSS style rule.
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal sealed class CssStyleRule : CssRule, ICssStyleRule, ICssRule, IStyleFormattable
{
private readonly CssStyleDeclaration _style;
private ISelector _selector;
public ISelector Selector {
get {
return _selector;
}
set {
_selector = value;
}
}
public string SelectorText {
get {
return _selector.Text;
}
set {
ISelector selector = base.Parser.ParseSelector(value);
if (selector != null)
_selector = selector;
}
}
ICssStyleDeclaration ICssStyleRule.Style {
get {
return _style;
}
}
public CssStyleDeclaration Style => _style;
internal CssStyleRule(CssParser parser)
: base(CssRuleType.Style, parser)
{
_style = new CssStyleDeclaration(this);
_selector = SimpleSelector.All;
}
protected override void ReplaceWith(ICssRule rule)
{
CssStyleRule cssStyleRule = (CssStyleRule)rule;
_selector = cssStyleRule._selector;
_style.Clear();
_style.SetDeclarations(cssStyleRule._style.Declarations);
}
public override string ToCss(IStyleFormatter formatter)
{
string rules = _style.ToCss(formatter);
return formatter.Style(_selector.Text, rules);
}
}
}