AngleSharp by AngleSharp

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

 StyleCollection

Represents a list of CSS stylesheets.
using AngleSharp.Css; using AngleSharp.Dom.Css; using System.Collections; using System.Collections.Generic; namespace AngleSharp.Dom.Collections { internal sealed class StyleCollection : IEnumerable<CssStyleRule>, IEnumerable { private readonly IEnumerable<CssStyleSheet> _sheets; private readonly RenderDevice _device; public RenderDevice Device => _device; public StyleCollection(IEnumerable<CssStyleSheet> sheets, RenderDevice device) { _sheets = sheets; _device = device; } public IEnumerator<CssStyleRule> GetEnumerator() { foreach (CssStyleSheet sheet in _sheets) { if (!sheet.IsDisabled && sheet.Media.Validate(_device)) { IEnumerable<CssStyleRule> rules = GetRules(sheet.Rules); foreach (CssStyleRule item in rules) { yield return item; } } } } private IEnumerable<CssStyleRule> GetRules(CssRuleList rules) { foreach (ICssRule rule in rules) { if (rule.Type == CssRuleType.Media) { CssMediaRule media = (CssMediaRule)rule; if (media.IsValid(_device)) { IEnumerable<CssStyleRule> subrules2 = GetRules(media.Rules); foreach (CssStyleRule item in subrules2) { yield return item; } } } else if (rule.Type == CssRuleType.Supports) { CssSupportsRule support = (CssSupportsRule)rule; if (support.IsValid(_device)) { IEnumerable<CssStyleRule> subrules = GetRules(support.Rules); foreach (CssStyleRule item2 in subrules) { yield return item2; } } } else if (rule.Type == CssRuleType.Style) { yield return (CssStyleRule)rule; } } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } }