CssStyleRule
Represents a CSS style rule.
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal sealed class CssStyleRule : CssRule, ICssStyleRule, ICssRule
{
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 = CssParser.ParseSelector(value);
if (selector != null)
_selector = selector;
}
}
ICssStyleDeclaration ICssStyleRule.Style {
get {
return _style;
}
}
public CssStyleDeclaration Style => _style;
internal CssStyleRule()
: base(CssRuleType.Style)
{
_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);
}
protected override string ToCss()
{
return _selector.Text + " " + _style.ToCssBlock();
}
}
}