CssDocumentRule
sealed class CssDocumentRule : CssGroupingRule, ICssDocumentRule, ICssConditionRule, ICssGroupingRule, ICssRule, IStyleFormattable
Contains the rules specified by a
@document { /* ... */ } rule.
using AngleSharp.Css;
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<CssDocumentFunction> _conditions;
public string ConditionText {
get {
string[] array = new string[_conditions.Count];
for (int i = 0; i < array.Length; i++) {
array[i] = _conditions[i].ToCss();
}
return string.Join(", ", array);
}
set {
List<CssDocumentFunction> list = base.Parser.ParseDocumentRules(value);
if (list == null)
throw new DomException(DomError.Syntax);
_conditions.Clear();
_conditions.AddRange(list);
}
}
public List<CssDocumentFunction> Conditions => _conditions;
internal CssDocumentRule(CssParser parser)
: base(CssRuleType.Document, parser)
{
_conditions = new List<CssDocumentFunction>();
}
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);
}
}
}