AngleSharp by AngleSharp

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

.NET API 1,204,224 bytes

 CssContentProperty

Information can be found on MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/content
using AngleSharp.Css; using AngleSharp.Css.Values; using AngleSharp.Extensions; using System; using System.Collections.Generic; namespace AngleSharp.Dom.Css { internal sealed class CssContentProperty : CssProperty { private abstract class ContentMode { public abstract string Stringify(IElement element); } private sealed class NormalContentMode : ContentMode { public override string Stringify(IElement element) { return string.Empty; } } private sealed class OpenQuoteContentMode : ContentMode { public override string Stringify(IElement element) { return string.Empty; } } private sealed class CloseQuoteContentMode : ContentMode { public override string Stringify(IElement element) { return string.Empty; } } private sealed class NoOpenQuoteContentMode : ContentMode { public override string Stringify(IElement element) { return string.Empty; } } private sealed class NoCloseQuoteContentMode : ContentMode { public override string Stringify(IElement element) { return string.Empty; } } private sealed class TextContentMode : ContentMode { private readonly string _text; public TextContentMode(string text) { _text = text; } public override string Stringify(IElement element) { return _text; } } private sealed class CounterContentMode : ContentMode { private readonly Counter _counter; public CounterContentMode(Counter counter) { _counter = counter; } public override string Stringify(IElement element) { return string.Empty; } } private sealed class AttributeContentMode : ContentMode { private readonly string _attribute; public AttributeContentMode(string attribute) { _attribute = attribute; } public override string Stringify(IElement element) { return element.GetAttribute(_attribute) ?? string.Empty; } } private sealed class UrlContentMode : ContentMode { private readonly string _url; public UrlContentMode(string url) { _url = url; } public override string Stringify(IElement element) { return string.Empty; } } private static readonly Dictionary<string, ContentMode> ContentModes = new Dictionary<string, ContentMode>(StringComparer.OrdinalIgnoreCase) { { Keywords.OpenQuote, new OpenQuoteContentMode() }, { Keywords.NoOpenQuote, new NoOpenQuoteContentMode() }, { Keywords.CloseQuote, new CloseQuoteContentMode() }, { Keywords.NoCloseQuote, new NoCloseQuoteContentMode() } }; private static readonly ContentMode[] Default = new NormalContentMode[1] { new NormalContentMode() }; private static readonly IValueConverter StyleConverter = Converters.Assign(Keywords.Normal, Default).OrNone().Or(ContentModes.ToConverter().Or(Converters.UrlConverter).Or(Converters.StringConverter) .Or(Converters.AttrConverter) .Or(Converters.CounterConverter) .Many(1, 65535)) .OrDefault(); internal override IValueConverter Converter => StyleConverter; internal CssContentProperty() : base(PropertyNames.Content, PropertyFlags.None) { } private static ContentMode TransformUrl(string url) { return new UrlContentMode(url); } private static ContentMode TransformString(string str) { return new TextContentMode(str); } private static ContentMode TransformAttr(string attr) { return new AttributeContentMode(attr); } private static ContentMode TransformCounter(Counter counter) { return new CounterContentMode(counter); } } }