CssSupportsRule
sealed class CssSupportsRule : CssConditionRule, ICssSupportsRule, ICssConditionRule, ICssGroupingRule, ICssRule
Represents an @supports rule.
using AngleSharp.Css;
using AngleSharp.Css.Conditions;
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
namespace AngleSharp.Dom.Css
{
internal sealed class CssSupportsRule : CssConditionRule, ICssSupportsRule, ICssConditionRule, ICssGroupingRule, ICssRule
{
private ICondition _condition;
private static readonly ICondition empty = new EmptyCondition();
public string ConditionText {
get {
return _condition.Text;
}
set {
ICondition condition = CssParser.ParseCondition(value, null);
if (condition == null)
throw new DomException(DomError.Syntax);
_condition = condition;
}
}
public ICondition Condition {
get {
return _condition;
}
set {
_condition = (value ?? empty);
}
}
public bool IsSupported => _condition.Check();
internal CssSupportsRule()
: base(CssRuleType.Supports)
{
_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;
}
protected override string ToCss()
{
return "@supports " + ConditionText + " " + base.Rules.ToCssBlock();
}
}
}