AngleSharp by Florian Rappl

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

.NET API 1,168,384 bytes

 CssRuleList

Represents an array like structure containing CSS rules.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; namespace AngleSharp.Dom.Css { internal sealed class CssRuleList : ICssRuleList, IEnumerable<ICssRule>, IEnumerable { private readonly List<CssRule> _rules; public int Length => _rules.Count; ICssRule ICssRuleList.this[int index] { get { if (index < 0 || index >= _rules.Count) return null; return _rules[index]; } } public string CssText { get { StringBuilder stringBuilder = Pool.NewStringBuilder(); for (int i = 0; i < _rules.Count; i++) { stringBuilder.AppendLine(_rules[i].CssText); } return stringBuilder.ToPool(); } } internal CssRule this[int index] { get { return _rules[index]; } } internal CssRuleList() { _rules = new List<CssRule>(); } internal void Clear() { for (int num = _rules.Count - 1; num >= 0; num--) { CssRule cssRule = _rules[num]; _rules.RemoveAt(num); cssRule.Parent = null; cssRule.Owner = null; } } internal void Import(CssRuleList rules, ICssStyleSheet owner, ICssRule parent) { while (rules._rules.Count > 0) { CssRule cssRule = rules._rules[0]; rules._rules.RemoveAt(0); cssRule.Parent = parent; cssRule.Owner = owner; _rules.Add(cssRule); } } internal void RemoveAt(int index) { if (index >= _rules.Count) throw new DomException(DomError.IndexSizeError); CssRule cssRule = _rules[index]; if (cssRule.Type == CssRuleType.Namespace && _rules.Any(delegate(CssRule m) { if (m.Type != CssRuleType.Import && m.Type != CssRuleType.Charset) return m.Type != CssRuleType.Namespace; return false; })) throw new DomException(DomError.InvalidState); _rules.RemoveAt(index); cssRule.Parent = null; cssRule.Owner = null; } internal void Insert(CssRule value, int index, ICssStyleSheet owner, ICssRule parent) { if (value == null) throw new DomException(DomError.Syntax); if (value.Type == CssRuleType.Charset) throw new DomException(DomError.Syntax); if (index > _rules.Count) throw new DomException(DomError.IndexSizeError); if (value.Type == CssRuleType.Namespace && _rules.Any(delegate(CssRule m) { if (m.Type != CssRuleType.Import && m.Type != CssRuleType.Charset) return m.Type != CssRuleType.Namespace; return false; })) throw new DomException(DomError.InvalidState); _rules.Insert(index, value); value.Owner = owner; value.Parent = parent; } internal void Add(CssRule value, ICssStyleSheet owner, ICssRule parent) { _rules.Add(value); value.Owner = owner; value.Parent = parent; } public IEnumerator<ICssRule> GetEnumerator() { List<CssRule>.Enumerator enumerator = _rules.GetEnumerator(); try { while (enumerator.MoveNext()) { CssRule current = enumerator.Current; yield return (ICssRule)current; } } finally { ((IDisposable)enumerator).Dispose(); } enumerator = default(List<CssRule>.Enumerator); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } }