StringsValueConverter
using AngleSharp.Dom.Css;
using AngleSharp.Extensions;
using AngleSharp.Parser.Css;
using System.Collections.Generic;
using System.Linq;
namespace AngleSharp.Css.ValueConverters
{
internal sealed class StringsValueConverter : IValueConverter
{
private sealed class StringsValue : IPropertyValue
{
private readonly string[] _values;
private readonly CssValue _original;
public string CssText => string.Join(" ", from m in _values
select m.CssString());
public CssValue Original => _original;
public StringsValue(string[] values, IEnumerable<CssToken> tokens)
{
_values = values;
_original = new CssValue(tokens);
}
public CssValue ExtractFor(string name)
{
return _original;
}
}
public IPropertyValue Convert(IEnumerable<CssToken> value)
{
List<List<CssToken>> list = value.ToItems();
int count = list.Count;
if (count % 2 == 0) {
string[] array = new string[list.Count];
for (int i = 0; i < count; i++) {
array[i] = list[i].ToCssString();
if (array[i] == null)
return null;
}
return new StringsValue(array, value);
}
return null;
}
public IPropertyValue Construct(CssProperty[] properties)
{
return properties.Guard<StringsValue>();
}
}
}