CssPaddingProperty
Information can be found on MDN:
https://developer.mozilla.org/en-US/docs/Web/CSS/padding
using AngleSharp.Css;
using AngleSharp.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
namespace AngleSharp.Dom.Css
{
internal sealed class CssPaddingProperty : CssShorthandProperty
{
private static readonly IValueConverter<Tuple<ICssValue, ICssValue, ICssValue, ICssValue>> Converter = Converters.LengthOrPercentConverter.Val().Periodic();
internal CssPaddingProperty(CssStyleDeclaration rule)
: base(PropertyNames.Padding, rule, PropertyFlags.None)
{
}
protected override bool IsValid(ICssValue value)
{
return Converter.TryConvert(value, delegate(Tuple<ICssValue, ICssValue, ICssValue, ICssValue> m) {
Get<CssPaddingTopProperty>().TrySetValue(m.Item1);
Get<CssPaddingRightProperty>().TrySetValue(m.Item2);
Get<CssPaddingBottomProperty>().TrySetValue(m.Item3);
Get<CssPaddingLeftProperty>().TrySetValue(m.Item4);
});
}
internal override string SerializeValue(IEnumerable<CssProperty> properties)
{
CssPaddingTopProperty cssPaddingTopProperty = properties.OfType<CssPaddingTopProperty>().FirstOrDefault();
CssPaddingRightProperty cssPaddingRightProperty = properties.OfType<CssPaddingRightProperty>().FirstOrDefault();
CssPaddingBottomProperty cssPaddingBottomProperty = properties.OfType<CssPaddingBottomProperty>().FirstOrDefault();
CssPaddingLeftProperty cssPaddingLeftProperty = properties.OfType<CssPaddingLeftProperty>().FirstOrDefault();
if (cssPaddingTopProperty == null || cssPaddingRightProperty == null || cssPaddingBottomProperty == null || cssPaddingLeftProperty == null)
return string.Empty;
if (!cssPaddingTopProperty.HasValue || !cssPaddingRightProperty.HasValue || !cssPaddingBottomProperty.HasValue || !cssPaddingLeftProperty.HasValue)
return string.Empty;
return CssShorthandProperty.SerializePeriodic(cssPaddingTopProperty, cssPaddingRightProperty, cssPaddingBottomProperty, cssPaddingLeftProperty);
}
}
}