DictionaryValueConverter<T>
using AngleSharp.Dom.Css;
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
using System.Collections.Generic;
namespace AngleSharp.Css.ValueConverters
{
internal sealed class DictionaryValueConverter<T> : IValueConverter
{
private sealed class EnumeratedValue : IPropertyValue
{
private readonly string _identifier;
private readonly T _value;
private readonly CssValue _original;
public string CssText => _identifier;
public CssValue Original => _original;
public EnumeratedValue(string identifier, T value, IEnumerable<CssToken> tokens)
{
_identifier = identifier;
_value = value;
_original = new CssValue(tokens);
}
public CssValue ExtractFor(string name)
{
return _original;
}
}
private readonly Dictionary<string, T> _values;
public DictionaryValueConverter(Dictionary<string, T> values)
{
_values = values;
}
public IPropertyValue Convert(IEnumerable<CssToken> value)
{
string text = value.ToIdentifier();
T value2 = default(T);
if (text == null || !_values.TryGetValue(text, out value2))
return null;
return new EnumeratedValue(text, value2, value);
}
public IPropertyValue Construct(CssProperty[] properties)
{
return PropertyExtensions.Guard<EnumeratedValue>(properties);
}
}
}