CssColumnsProperty
More information available at:
https://developer.mozilla.org/en-US/docs/Web/CSS/columns
using AngleSharp.Css;
using AngleSharp.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
namespace AngleSharp.Dom.Css
{
internal sealed class CssColumnsProperty : CssShorthandProperty
{
private static readonly IValueConverter<Tuple<CssValue, CssValue>> Converter = Converters.WithAny(Converters.AutoLengthConverter.Val().Option(), Converters.OptionalIntegerConverter.Val().Option());
internal CssColumnsProperty(CssStyleDeclaration rule)
: base(PropertyNames.Columns, rule, PropertyFlags.Animatable)
{
}
protected override bool IsValid(CssValue value)
{
return Converter.TryConvert(value, delegate(Tuple<CssValue, CssValue> m) {
Get<CssColumnWidthProperty>().TrySetValue(m.Item1);
Get<CssColumnCountProperty>().TrySetValue(m.Item2);
});
}
internal override string SerializeValue(IEnumerable<CssProperty> properties)
{
CssColumnWidthProperty cssColumnWidthProperty = properties.OfType<CssColumnWidthProperty>().FirstOrDefault();
CssColumnCountProperty cssColumnCountProperty = properties.OfType<CssColumnCountProperty>().FirstOrDefault();
if (cssColumnWidthProperty == null || cssColumnCountProperty == null)
return string.Empty;
if (!cssColumnWidthProperty.HasValue || !cssColumnCountProperty.HasValue)
return string.Empty;
return cssColumnWidthProperty.SerializeValue() + " " + cssColumnCountProperty.SerializeValue();
}
}
}