OptionValueConverter<T>
using AngleSharp.Dom.Css;
using AngleSharp.Parser.Css;
using System.Collections.Generic;
using System.Linq;
namespace AngleSharp.Css.ValueConverters
{
internal sealed class OptionValueConverter<T> : IValueConverter
{
private sealed class OptionValue : IPropertyValue
{
private readonly T _value;
private readonly CssValue _original;
public string CssText => string.Empty;
public CssValue Original => _original;
public OptionValue(T value, IEnumerable<CssToken> tokens)
{
_value = value;
_original = new CssValue(tokens);
}
public CssValue ExtractFor(string name)
{
return null;
}
}
private readonly IValueConverter _converter;
private readonly T _defaultValue;
public OptionValueConverter(IValueConverter converter, T defaultValue)
{
_converter = converter;
_defaultValue = defaultValue;
}
public IPropertyValue Convert(IEnumerable<CssToken> value)
{
if (!Enumerable.Any<CssToken>(value))
return new OptionValue(_defaultValue, value);
return _converter.Convert(value);
}
public IPropertyValue Construct(CssProperty[] properties)
{
return _converter.Construct(properties) ?? new OptionValue(_defaultValue, Enumerable.Empty<CssToken>());
}
}
}