AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="0.9.4" />

.NET API 1,232,384 bytes

 CssNode

abstract class CssNode : ICssNode, IStyleFormattable
Represents a node in the CSS parse tree.
using System.Collections.Generic; using System.Linq; namespace AngleSharp.Dom.Css { internal abstract class CssNode : ICssNode, IStyleFormattable { private readonly List<ICssNode> _children; private TextView _source; public TextView SourceCode { get { return _source; } internal set { _source = value; } } public IEnumerable<ICssNode> Children => _children.AsEnumerable(); public CssNode() { _children = new List<ICssNode>(); _source = null; } public abstract string ToCss(IStyleFormatter formatter); public void AppendChild(ICssNode child) { Setup(child); _children.Add(child); } public void ReplaceChild(ICssNode oldChild, ICssNode newChild) { int num = 0; while (true) { if (num >= _children.Count) return; if (object.ReferenceEquals(oldChild, _children[num])) break; num++; } Teardown(oldChild); Setup(newChild); _children[num] = newChild; } public void InsertBefore(ICssNode referenceChild, ICssNode child) { if (referenceChild != null) { int index = _children.IndexOf(referenceChild); InsertChild(index, child); } else AppendChild(child); } public void InsertChild(int index, ICssNode child) { Setup(child); _children.Insert(index, child); } public void RemoveChild(ICssNode child) { Teardown(child); _children.Remove(child); } public void Clear() { for (int num = _children.Count - 1; num >= 0; num--) { ICssNode child = _children[num]; RemoveChild(child); } } protected void ReplaceAll(ICssNode node) { Clear(); _source = node.SourceCode; foreach (ICssNode child in node.Children) { AppendChild(child); } } private void Setup(ICssNode child) { CssRule cssRule = child as CssRule; if (cssRule != null) { cssRule.Owner = (this as ICssStyleSheet); cssRule.Parent = (this as ICssRule); } } private void Teardown(ICssNode child) { CssRule cssRule = child as CssRule; if (cssRule != null) { cssRule.Parent = null; cssRule.Owner = null; } } } }