This commit is contained in:
Florian Rappl 2019-05-10 15:07:28 +02:00
Родитель e6db1869ff
Коммит 4f77ace363
3 изменённых файлов: 20 добавлений и 44 удалений

Просмотреть файл

@ -4,6 +4,7 @@ namespace AngleSharp.Css.Declarations
using AngleSharp.Css.Values;
using AngleSharp.Text;
using System;
using System.Linq;
using static ValueConverters;
static class BorderBottomDeclaration
@ -28,20 +29,13 @@ namespace AngleSharp.Css.Declarations
sealed class BorderBottomAggregator : IValueAggregator, IValueConverter
{
public ICssValue Convert(StringSource source)
{
return BorderSideConverter.Convert(source);
}
public ICssValue Convert(StringSource source) => BorderSideConverter.Convert(source);
public ICssValue Merge(ICssValue[] values)
{
var width = values[0];
var style = values[1];
var color = values[2];
if (width != null || style != null || color != null)
if (values.Length == 3)
{
return new CssTupleValue(new[] { width, style, color });
return new CssTupleValue(values);
}
return null;
@ -49,16 +43,9 @@ namespace AngleSharp.Css.Declarations
public ICssValue[] Split(ICssValue value)
{
var options = value as CssTupleValue;
if (options != null)
if (value is CssTupleValue options)
{
return new[]
{
options.Items[0],
options.Items[1],
options.Items[2],
};
return options.ToArray();
}
return null;

Просмотреть файл

@ -5,6 +5,7 @@ namespace AngleSharp.Css.Declarations
using AngleSharp.Css.Values;
using AngleSharp.Text;
using System;
using System.Linq;
using static ValueConverters;
static class BorderColorDeclaration
@ -32,21 +33,13 @@ namespace AngleSharp.Css.Declarations
{
private static readonly IValueConverter converter = Or(CurrentColorConverter.Periodic(), AssignInitial());
public ICssValue Convert(StringSource source)
{
return converter.Convert(source);
}
public ICssValue Convert(StringSource source) => converter.Convert(source);
public ICssValue Merge(ICssValue[] values)
{
var top = values[0];
var right = values[1];
var bottom = values[2];
var left = values[3];
if (top != null && right != null && bottom != null && left != null)
if (values.Length > 0)
{
return new CssPeriodicValue(new[] { top, right, bottom, left });
return new CssPeriodicValue(values);
}
return null;
@ -54,17 +47,9 @@ namespace AngleSharp.Css.Declarations
public ICssValue[] Split(ICssValue value)
{
var periodic = value as CssPeriodicValue;
if (periodic != null)
if (value is CssPeriodicValue periodic)
{
return new[]
{
periodic.Top,
periodic.Right,
periodic.Bottom,
periodic.Left,
};
return periodic.ToArray();
}
return null;

Просмотреть файл

@ -4,7 +4,6 @@ namespace AngleSharp.Css.Values
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
/// <summary>
/// Represents a periodic CSS value.
@ -108,10 +107,15 @@ namespace AngleSharp.Css.Values
#region Methods
IEnumerator<ICssValue> IEnumerable<ICssValue>.GetEnumerator() =>
_values.OfType<ICssValue>().GetEnumerator();
IEnumerator<ICssValue> IEnumerable<ICssValue>.GetEnumerator()
{
yield return Top;
yield return Right;
yield return Bottom;
yield return Left;
}
IEnumerator IEnumerable.GetEnumerator() => _values.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable<ICssValue>)this).GetEnumerator();
#endregion
}