AngleSharp by AngleSharp

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

.NET API 1,224,704 bytes

 FunctionValueConverter

using AngleSharp.Dom.Css; using AngleSharp.Extensions; using AngleSharp.Parser.Css; using System; using System.Collections.Generic; namespace AngleSharp.Css.ValueConverters { internal sealed class FunctionValueConverter : IValueConverter { private sealed class FunctionValue : IPropertyValue { private readonly string _name; private readonly IPropertyValue _arguments; private readonly CssValue _value; public string CssText => _name.CssFunction(_arguments.CssText); public CssValue Original => _value; public FunctionValue(string name, IPropertyValue arguments, IEnumerable<CssToken> tokens) { _name = name; _arguments = arguments; _value = new CssValue(tokens); } public CssValue ExtractFor(string name) { return _value; } } private readonly string _name; private readonly IValueConverter _arguments; public FunctionValueConverter(string name, IValueConverter arguments) { _name = name; _arguments = arguments; } public IPropertyValue Convert(IEnumerable<CssToken> value) { CssFunctionToken cssFunctionToken = value.OnlyOrDefault() as CssFunctionToken; if (Check(cssFunctionToken)) { IPropertyValue propertyValue = _arguments.Convert(cssFunctionToken.ArgumentTokens); if (propertyValue == null) return null; return new FunctionValue(_name, propertyValue, value); } return null; } public IPropertyValue Construct(CssProperty[] properties) { return properties.Guard<FunctionValue>(); } private bool Check(CssFunctionToken function) { return function?.Data.Equals(_name, StringComparison.OrdinalIgnoreCase) ?? false; } } }