CssBorderStyleProperty
Information can be found on MDN:
https://developer.mozilla.org/en-US/docs/Web/CSS/border-style
using AngleSharp.Css;
using AngleSharp.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
namespace AngleSharp.Dom.Css
{
internal sealed class CssBorderStyleProperty : CssShorthandProperty
{
private static readonly IValueConverter<Tuple<ICssValue, ICssValue, ICssValue, ICssValue>> Converter = Converters.LineStyleConverter.Val().Periodic();
internal CssBorderStyleProperty(CssStyleDeclaration rule)
: base(PropertyNames.BorderStyle, rule, PropertyFlags.None)
{
}
protected override bool IsValid(ICssValue value)
{
return Converter.TryConvert(value, delegate(Tuple<ICssValue, ICssValue, ICssValue, ICssValue> m) {
Get<CssBorderTopStyleProperty>().TrySetValue(m.Item1);
Get<CssBorderRightStyleProperty>().TrySetValue(m.Item2);
Get<CssBorderBottomStyleProperty>().TrySetValue(m.Item3);
Get<CssBorderLeftStyleProperty>().TrySetValue(m.Item4);
});
}
internal override string SerializeValue(IEnumerable<CssProperty> properties)
{
CssBorderTopStyleProperty cssBorderTopStyleProperty = properties.OfType<CssBorderTopStyleProperty>().FirstOrDefault();
CssBorderRightStyleProperty cssBorderRightStyleProperty = properties.OfType<CssBorderRightStyleProperty>().FirstOrDefault();
CssBorderBottomStyleProperty cssBorderBottomStyleProperty = properties.OfType<CssBorderBottomStyleProperty>().FirstOrDefault();
CssBorderLeftStyleProperty cssBorderLeftStyleProperty = properties.OfType<CssBorderLeftStyleProperty>().FirstOrDefault();
if (cssBorderTopStyleProperty == null || cssBorderRightStyleProperty == null || cssBorderBottomStyleProperty == null || cssBorderLeftStyleProperty == null)
return string.Empty;
if (!cssBorderTopStyleProperty.HasValue || !cssBorderRightStyleProperty.HasValue || !cssBorderBottomStyleProperty.HasValue || !cssBorderLeftStyleProperty.HasValue)
return string.Empty;
return CssShorthandProperty.SerializePeriodic(cssBorderTopStyleProperty, cssBorderRightStyleProperty, cssBorderBottomStyleProperty, cssBorderLeftStyleProperty);
}
}
}