OptionValueConverter<T>
using AngleSharp.Dom.Css;
using System;
namespace AngleSharp.Css.ValueConverters
{
internal sealed class OptionValueConverter<T> : IValueConverter<T>, IValueConverter
{
private readonly IValueConverter<T> _converter;
private readonly T _default;
public int MinArgs => 0;
public int MaxArgs => _converter.MaxArgs;
public OptionValueConverter(IValueConverter<T> converter, T default)
{
_converter = converter;
_default = default;
}
public bool TryConvert(ICssValue value, Action<T> setResult)
{
if (value == null) {
setResult(_default);
return true;
}
return _converter.TryConvert(value, setResult);
}
public bool Validate(ICssValue value)
{
if (value != null)
return _converter.Validate(value);
return true;
}
}
}