CssDocumentRule
sealed class CssDocumentRule : CssGroupingRule, ICssDocumentRule, ICssConditionRule, ICssGroupingRule, ICssRule, IStyleFormattable
Contains the rules specified by a
@document { /* ... */ } rule.
using AngleSharp.Css;
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
using System.Collections.Generic;
namespace AngleSharp.Dom.Css
{
internal sealed class CssDocumentRule : CssGroupingRule, ICssDocumentRule, ICssConditionRule, ICssGroupingRule, ICssRule, IStyleFormattable
{
private readonly List<IDocumentFunction> _conditions;
public string ConditionText {
get {
string[] array = new string[_conditions.Count];
for (int i = 0; i < array.Length; i++) {
IDocumentFunction documentFunction = _conditions[i];
string name = documentFunction.Name;
string str = documentFunction.Data.CssString();
array[i] = name + "(" + str + ")";
}
return string.Join(", ", array);
}
set {
List<IDocumentFunction> list = CssParser.ParseDocumentRules(value);
if (list == null)
throw new DomException(DomError.Syntax);
_conditions.Clear();
_conditions.AddRange(list);
}
}
public List<IDocumentFunction> Conditions => _conditions;
internal CssDocumentRule()
: base(CssRuleType.Document)
{
_conditions = new List<IDocumentFunction>();
}
protected override void ReplaceWith(ICssRule rule)
{
base.ReplaceWith(rule);
CssDocumentRule cssDocumentRule = rule as CssDocumentRule;
_conditions.Clear();
_conditions.AddRange(cssDocumentRule._conditions);
}
public override string ToCss(IStyleFormatter formatter)
{
string rules = formatter.Block(base.Rules);
return formatter.Rule("@document", ConditionText, rules);
}
}
}