AngleSharp by Florian Rappl

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

 MediaList

sealed class MediaList : IMediaList, IEnumerable<string>, IEnumerable
Represents a list of media elements.
using AngleSharp.Css; using AngleSharp.Dom.Css; using AngleSharp.Parser.Css; using System.Collections; using System.Collections.Generic; namespace AngleSharp.Dom.Collections { internal sealed class MediaList : IMediaList, IEnumerable<string>, IEnumerable { private readonly CssParser _parser; private readonly List<CssMedium> _media; public string this[int index] { get { if (index < 0 || index >= _media.Count) return null; return _media[index].ToCss(); } } public int Length => _media.Count; public string MediaText { get { string[] array = new string[_media.Count]; for (int i = 0; i < _media.Count; i++) { array[i] = _media[i].ToCss(); } return string.Join(", ", array); } set { _media.Clear(); foreach (CssMedium item in _parser.ParseMediaList(value)) { if (item == null) throw new DomException(DomError.Syntax); _media.Add(item); } } } internal MediaList(CssParser parser) { _parser = parser; _media = new List<CssMedium>(); } public bool Validate(RenderDevice device) { foreach (CssMedium medium in _media) { if (!medium.Validate(device)) return false; } return true; } public void Add(string newMedium) { CssMedium cssMedium = _parser.ParseMedium(newMedium); if (cssMedium == null) throw new DomException(DomError.Syntax); _media.Add(cssMedium); } public void Remove(string oldMedium) { CssMedium cssMedium = _parser.ParseMedium(oldMedium); if (cssMedium == null) throw new DomException(DomError.Syntax); foreach (CssMedium medium in _media) { if (medium.Equals(cssMedium)) { _media.Remove(medium); return; } } throw new DomException(DomError.NotFound); } public void Add(CssMedium medium) { _media.Add(medium); } public void Clear() { _media.Clear(); } public void Import(MediaList list) { _media.Clear(); _media.AddRange(list._media); } public IEnumerator<string> GetEnumerator() { foreach (CssMedium medium in _media) { yield return medium.ToCss(); } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } }