AngleSharp by Florian Rappl

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

.NET API 1,176,064 bytes

 StringsValueConverter

using AngleSharp.Dom.Css; using AngleSharp.Extensions; using AngleSharp.Parser.Css; using System.Collections.Generic; using System.Linq; namespace AngleSharp.Css.ValueConverters { internal sealed class StringsValueConverter : IValueConverter { private sealed class StringsValue : IPropertyValue { private readonly string[] _values; private readonly CssValue _original; public string CssText => string.Join(" ", from m in _values select m.CssString()); public CssValue Original => _original; public StringsValue(string[] values, IEnumerable<CssToken> tokens) { _values = values; _original = new CssValue(tokens); } public CssValue ExtractFor(string name) { return _original; } } public IPropertyValue Convert(IEnumerable<CssToken> value) { List<List<CssToken>> list = value.ToItems(); int count = list.Count; if (count % 2 == 0) { string[] array = new string[list.Count]; for (int i = 0; i < count; i++) { array[i] = list[i].ToCssString(); if (array[i] == null) return null; } return new StringsValue(array, value); } return null; } public IPropertyValue Construct(CssProperty[] properties) { return properties.Guard<StringsValue>(); } } }