AngleSharp by AngleSharp

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

 MediaList

Represents a list of media elements.
using AngleSharp.Css; using AngleSharp.Dom.Css; using AngleSharp.Extensions; using AngleSharp.Parser.Css; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; namespace AngleSharp.Dom.Collections { internal sealed class MediaList : CssNode, IMediaList, ICssNode, IStyleFormattable, IEnumerable<ICssMedium>, IEnumerable { private readonly CssParser _parser; public string this[int index] { get { return Media.GetItemByIndex(index).ToCss(); } } public IEnumerable<CssMedium> Media => base.Children.OfType<CssMedium>(); public int Length => Media.Count(); public string MediaText { get { return this.ToCss(); } set { Clear(); foreach (CssMedium item in _parser.ParseMediaList(value)) { if (item == null) throw new DomException(DomError.Syntax); AppendChild(item); } } } internal MediaList(CssParser parser) { _parser = parser; } public override void ToCss(TextWriter writer, IStyleFormatter formatter) { CssMedium[] array = Media.ToArray(); if (array.Length != 0) { array[0].ToCss(writer, formatter); for (int i = 1; i < array.Length; i++) { writer.Write(", "); array[i].ToCss(writer, formatter); } } } public bool Validate(RenderDevice device) { return !Media.Any((CssMedium m) => !m.Validate(device)); } public void Add(string newMedium) { CssMedium cssMedium = _parser.ParseMedium(newMedium); if (cssMedium == null) throw new DomException(DomError.Syntax); AppendChild(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)) { RemoveChild(medium); return; } } throw new DomException(DomError.NotFound); } public IEnumerator<ICssMedium> GetEnumerator() { return Media.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } }