CssKeyframesRule
Represents an @keyframes rule.
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
using System.IO;
using System.Linq;
namespace AngleSharp.Dom.Css
{
internal sealed class CssKeyframesRule : CssRule, ICssKeyframesRule, ICssRule, ICssNode, IStyleFormattable
{
private readonly CssRuleList _rules;
private string _name;
public string Name {
get {
return _name;
}
set {
_name = value;
}
}
public CssRuleList Rules => _rules;
ICssRuleList ICssKeyframesRule.Rules {
get {
return _rules;
}
}
internal CssKeyframesRule(CssParser parser)
: base(CssRuleType.Keyframes, parser)
{
_rules = new CssRuleList(this);
}
public void Add(string ruleText)
{
CssKeyframeRule rule = base.Parser.ParseKeyframeRule(ruleText);
_rules.Add(rule);
}
public void Remove(string key)
{
CssKeyframeRule rule = Find(key);
_rules.Remove(rule);
}
public CssKeyframeRule Find(string key)
{
return _rules.OfType<CssKeyframeRule>().FirstOrDefault((CssKeyframeRule m) => key.Isi(m.KeyText));
}
public override void ToCss(TextWriter writer, IStyleFormatter formatter)
{
string rules = formatter.Block(Rules);
writer.Write(formatter.Rule("@keyframes", _name, rules));
}
ICssKeyframeRule ICssKeyframesRule.Find(string key)
{
return Find(key);
}
protected override void ReplaceWith(ICssRule rule)
{
CssKeyframesRule cssKeyframesRule = rule as CssKeyframesRule;
_name = cssKeyframesRule._name;
base.ReplaceWith(rule);
}
}
}