CssSupportsRule
sealed class CssSupportsRule : CssConditionRule, ICssSupportsRule, ICssConditionRule, ICssGroupingRule, ICssRule, IStyleFormattable
Represents an @supports rule.
using AngleSharp.Css;
using AngleSharp.Css.Conditions;
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal sealed class CssSupportsRule : CssConditionRule, ICssSupportsRule, ICssConditionRule, ICssGroupingRule, ICssRule, IStyleFormattable
{
private CssCondition _condition;
private static readonly CssCondition empty = new EmptyCondition();
public string ConditionText {
get {
return _condition.ToCss();
}
set {
CssCondition cssCondition = base.Parser.ParseCondition(value);
if (cssCondition == null)
throw new DomException(DomError.Syntax);
_condition = cssCondition;
}
}
public CssCondition Condition {
get {
return _condition;
}
set {
_condition = (value ?? empty);
}
}
public bool IsSupported => _condition.Check();
internal CssSupportsRule(CssParser parser)
: base(CssRuleType.Supports, parser)
{
_condition = empty;
}
protected override void ReplaceWith(ICssRule rule)
{
base.ReplaceWith(rule);
CssSupportsRule cssSupportsRule = rule as CssSupportsRule;
ConditionText = cssSupportsRule.ConditionText;
}
internal override bool IsValid(RenderDevice device)
{
return true;
}
public override string ToCss(IStyleFormatter formatter)
{
string rules = formatter.Block(base.Rules);
return formatter.Rule("@supports", ConditionText, rules);
}
}
}