AngleSharp by Florian Rappl

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

.NET API 1,208,832 bytes

 ArgumentsValueConverter

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 ArgumentsValueConverter : IValueConverter { private sealed class ArgumentsValue : IPropertyValue { private readonly IPropertyValue[] _arguments; private readonly CssValue _value; public string CssText => string.Join(", ", from m in _arguments where !string.IsNullOrEmpty(m.CssText) select m.CssText); public CssValue Original => _value; public ArgumentsValue(IPropertyValue[] arguments, IEnumerable<CssToken> tokens) { _arguments = arguments; _value = new CssValue(tokens); } public CssValue ExtractFor(string name) { return _value; } } private readonly IValueConverter[] _converters; public ArgumentsValueConverter(params IValueConverter[] converters) { _converters = converters; } public IPropertyValue Convert(IEnumerable<CssToken> value) { List<List<CssToken>> list = value.ToList(); int num = _converters.Length; if (list.Count <= num) { IPropertyValue[] array = new IPropertyValue[num]; for (int i = 0; i < num; i++) { IEnumerable<CssToken> value2 = (i < list.Count) ? list[i] : Enumerable.Empty<CssToken>(); array[i] = _converters[i].Convert(value2); if (array[i] == null) return null; } return new ArgumentsValue(array, value); } return null; } public IPropertyValue Construct(CssProperty[] properties) { return properties.Guard<ArgumentsValue>(); } } }