AngleSharp by AngleSharp

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

.NET API 1,232,384 bytes

 StyleSheetExtensions

public static class StyleSheetExtensions
Defines a set of extension methods for style sheets.
using AngleSharp.Dom; using AngleSharp.Dom.Css; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; namespace AngleSharp.Extensions { [DebuggerStepThrough] public static class StyleSheetExtensions { public static IEnumerable<TRule> RulesOf<TRule>(this IEnumerable<IStyleSheet> sheets) where TRule : ICssRule { if (sheets == null) throw new ArgumentNullException("sheets"); return (from m in sheets where !m.IsDisabled select m).OfType<ICssStyleSheet>().SelectMany((ICssStyleSheet m) => m.Rules).OfType<TRule>(); } public static IEnumerable<ICssStyleRule> StylesWith(this IEnumerable<IStyleSheet> sheets, ISelector selector) { if (selector == null) throw new ArgumentNullException("selector"); string selectorText = selector.Text; return from m in sheets.RulesOf<ICssStyleRule>() where m.SelectorText == selectorText select m; } public static IDocument GetDocument(this IStyleSheet sheet) { if (sheet == null || sheet.OwnerNode == null) return null; return sheet.OwnerNode.Owner; } public static IEnumerable<ICssComment> GetComments(this ICssNode node) { return node.GetAll<ICssComment>(); } public static IEnumerable<ICssNode> GetAllDescendents(this ICssNode node) { if (node == null) throw new ArgumentNullException("node"); return node.Children.SelectMany((ICssNode m) => m.GetAllDescendents()); } public static IEnumerable<T> GetAll<T>(this ICssNode node) where T : IStyleFormattable { if (node == null) throw new ArgumentNullException("node"); if (node is T) yield return (T)node; foreach (T item in Enumerable.SelectMany<ICssNode, T>(node.Children, (Func<ICssNode, IEnumerable<T>>)((ICssNode m) => StyleSheetExtensions.GetAll<T>(m)))) { yield return item; } } } }