IdentifierValueConverter
using AngleSharp.Dom.Css;
using AngleSharp.Parser.Css;
using System;
using System.Collections.Generic;
namespace AngleSharp.Css.ValueConverters
{
internal sealed class IdentifierValueConverter : IValueConverter
{
private sealed class IdentifierValue : IPropertyValue
{
private readonly string _identifier;
private readonly CssValue _value;
public string CssText => _identifier;
public CssValue Original => _value;
public IdentifierValue(string identifier, IEnumerable<CssToken> tokens)
{
_identifier = identifier;
_value = new CssValue(tokens);
}
public CssValue ExtractFor(string name)
{
return _value;
}
}
private readonly Func<IEnumerable<CssToken>, string> _converter;
public IdentifierValueConverter(Func<IEnumerable<CssToken>, string> converter)
{
_converter = converter;
}
public IPropertyValue Convert(IEnumerable<CssToken> value)
{
string text = _converter(value);
if (text == null)
return null;
return new IdentifierValue(text, value);
}
public IPropertyValue Construct(CssProperty[] properties)
{
return properties.Guard<IdentifierValue>();
}
}
}