CssDocumentRule
sealed class CssDocumentRule : CssGroupingRule, ICssDocumentRule, ICssConditionRule, ICssGroupingRule, ICssRule, ICssNode, IStyleFormattable, ICssRuleCreator
Contains the rules specified by a @document { /* ... */ } rule.
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace AngleSharp.Dom.Css
{
internal sealed class CssDocumentRule : CssGroupingRule, ICssDocumentRule, ICssConditionRule, ICssGroupingRule, ICssRule, ICssNode, IStyleFormattable, ICssRuleCreator
{
public string ConditionText {
get {
IEnumerable<string> values = from m in Conditions
select m.ToCss();
return string.Join(", ", values);
}
set {
List<DocumentFunction> list = base.Parser.ParseDocumentRules(value);
if (list == null)
throw new DomException(DomError.Syntax);
Clear();
foreach (DocumentFunction item in list) {
AppendChild(item);
}
}
}
public IEnumerable<IDocumentFunction> Conditions => base.Children.OfType<IDocumentFunction>();
internal CssDocumentRule(CssParser parser)
: base(CssRuleType.Document, parser)
{
}
internal bool IsValid(Url url)
{
return Conditions.Any((IDocumentFunction m) => m.Matches(url));
}
public override void ToCss(TextWriter writer, IStyleFormatter formatter)
{
string rules = formatter.Block(base.Rules);
writer.Write(formatter.Rule("@document", ConditionText, rules));
}
}
}