CssPageRule
Represents the @page rule.
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal sealed class CssPageRule : CssGroupingRule, ICssPageRule, ICssGroupingRule, 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, null);
if (selector != null)
_selector = selector;
}
}
ICssStyleDeclaration ICssPageRule.Style {
get {
return _style;
}
}
public CssStyleDeclaration Style => _style;
internal CssPageRule()
: base(CssRuleType.Page)
{
_style = new CssStyleDeclaration(this);
_selector = SimpleSelector.All;
}
protected override void ReplaceWith(ICssRule rule)
{
base.ReplaceWith(rule);
CssPageRule cssPageRule = (CssPageRule)rule;
_selector = cssPageRule._selector;
_style.Clear();
_style.SetDeclarations(cssPageRule._style);
}
protected override string ToCss()
{
string str = " { " + _style.CssText + ((_style.Length > 0) ? " }" : "}");
return "@page " + _selector.Text + str;
}
}
}