AngleSharp by AngleSharp

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

.NET API 1,218,560 bytes

 CssRuleList

Represents an array like structure containing CSS rules.
using System.Collections; using System.Collections.Generic; using System.Linq; 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]; } } 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 rule, ICssStyleSheet owner, ICssRule parent) { if (rule != null) { _rules.Add(rule); rule.Owner = owner; rule.Parent = parent; } } public IEnumerator<ICssRule> GetEnumerator() { foreach (CssRule rule in _rules) { yield return (ICssRule)rule; } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } }