Started working on nullable
This commit is contained in:
Родитель
b755de0b94
Коммит
281d7955ae
|
@ -10,7 +10,7 @@
|
|||
<icon>logo.png</icon>
|
||||
<readme>README.md</readme>
|
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||
<description>Extends the CSSOM from the core AngleSharp library.</description>
|
||||
<description>Extends the CSSOM from the core AngleSharp library. It parses CSS3 and is capable of performing a headless rendering evaluating the styles.</description>
|
||||
<releaseNotes>https://github.com/AngleSharp/AngleSharp.Css/blob/main/CHANGELOG.md</releaseNotes>
|
||||
<copyright>Copyright 2016-2024, AngleSharp</copyright>
|
||||
<tags>html html5 css css3 dom styling library anglesharp angle</tags>
|
||||
|
|
|
@ -4,10 +4,8 @@
|
|||
<RootNamespace>AngleSharp.Css</RootNamespace>
|
||||
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netstandard2.0;net6.0;net7.0;net8.0</TargetFrameworks>
|
||||
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">netstandard2.0;net461;net472;net6.0;net7.0;net8.0</TargetFrameworks>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<LangVersion>9</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<RepositoryUrl>https://github.com/AngleSharp/AngleSharp.Css</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<PublishRepositoryUrl>true</PublishRepositoryUrl>
|
||||
|
|
|
@ -20,7 +20,7 @@ namespace AngleSharp.Css
|
|||
/// <param name="address">The address of the resource.</param>
|
||||
/// <param name="element">The hosting element.</param>
|
||||
/// <returns>The async task.</returns>
|
||||
public static Task<IStyleSheet> OpenStyleSheetAsync(this IBrowsingContext context, Url address, IElement element) =>
|
||||
public static Task<IStyleSheet?> OpenStyleSheetAsync(this IBrowsingContext context, Url address, IElement element) =>
|
||||
context.OpenStyleSheetAsync(address, element, CancellationToken.None);
|
||||
|
||||
/// <summary>
|
||||
|
@ -31,22 +31,21 @@ namespace AngleSharp.Css
|
|||
/// <param name="element">The hosting element.</param>
|
||||
/// <param name="cancel">The cancellation token.</param>
|
||||
/// <returns>The async task.</returns>
|
||||
public static async Task<IStyleSheet> OpenStyleSheetAsync(this IBrowsingContext context, Url address, IElement element, CancellationToken cancel)
|
||||
public static async Task<IStyleSheet?> OpenStyleSheetAsync(this IBrowsingContext context, Url address, IElement element, CancellationToken cancel)
|
||||
{
|
||||
var loader = context.GetService<IResourceLoader>();
|
||||
var service = context.GetCssStyling();
|
||||
|
||||
if (loader != null && service != null)
|
||||
if (loader is not null && service is not null)
|
||||
{
|
||||
var request = element.CreateRequestFor(address);
|
||||
var download = loader.FetchAsync(request);
|
||||
|
||||
using (var response = await download.Task.ConfigureAwait(false))
|
||||
{
|
||||
var options = new StyleOptions(element?.Owner ?? context.Active) { Element = element };
|
||||
using var response = await download.Task.ConfigureAwait(false);
|
||||
var document = element.Owner ?? context.Active ?? throw new InvalidOperationException("Could not find a related documented.");
|
||||
var options = new StyleOptions(document) { Element = element };
|
||||
return await service.ParseStylesheetAsync(response, options, cancel).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
@ -57,7 +56,7 @@ namespace AngleSharp.Css
|
|||
return factory.Create(propertyName);
|
||||
}
|
||||
|
||||
internal static ICssProperty CreateShorthand(this IBrowsingContext context, String name, ICssValue[] longhands, Boolean important)
|
||||
internal static ICssProperty? CreateShorthand(this IBrowsingContext context, String name, ICssValue[] longhands, Boolean important)
|
||||
{
|
||||
var factory = context.GetFactory<IDeclarationFactory>();
|
||||
var info = factory.Create(name);
|
||||
|
@ -79,7 +78,7 @@ namespace AngleSharp.Css
|
|||
return factory.CreateProperties(info.Longhands, values, shorthand.IsImportant);
|
||||
}
|
||||
|
||||
internal static CssProperty CreateProperty(this IBrowsingContext context, String propertyName)
|
||||
internal static CssProperty? CreateProperty(this IBrowsingContext context, String propertyName)
|
||||
{
|
||||
var info = context.GetDeclarationInfo(propertyName);
|
||||
|
||||
|
@ -102,7 +101,7 @@ namespace AngleSharp.Css
|
|||
|
||||
private static ICssProperty[] CreateProperties(this IDeclarationFactory factory, String[] names, ICssValue[] values, Boolean important)
|
||||
{
|
||||
if (values != null && values.Length == names.Length)
|
||||
if (values.Length == names.Length)
|
||||
{
|
||||
var properties = new ICssProperty[names.Length];
|
||||
|
||||
|
@ -115,7 +114,7 @@ namespace AngleSharp.Css
|
|||
return properties;
|
||||
}
|
||||
|
||||
return null;
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ namespace AngleSharp.Css
|
|||
public static readonly ICssValue BackgroundRepeatDecl = new CssImageRepeatsValue(BackgroundRepeatHorizontalDecl, BackgroundRepeatVerticalDecl);
|
||||
public static readonly ICssValue BackgroundPositionXDecl = new CssLengthValue(0, CssLengthValue.Unit.Percent);
|
||||
public static readonly ICssValue BackgroundPositionYDecl = new CssLengthValue(0, CssLengthValue.Unit.Percent);
|
||||
public static readonly ICssValue BackgroundPositionDecl = new CssTupleValue(new [] { BackgroundPositionXDecl, BackgroundPositionYDecl });
|
||||
public static readonly ICssValue BackgroundPositionDecl = new CssTupleValue([BackgroundPositionXDecl, BackgroundPositionYDecl]);
|
||||
public static readonly ICssValue BackgroundSizeDecl = new CssBackgroundSizeValue(new CssConstantValue<CssLengthValue>(CssKeywords.Auto, CssLengthValue.Auto), new CssConstantValue<CssLengthValue>(CssKeywords.Auto, CssLengthValue.Auto));
|
||||
public static readonly ICssValue BackgroundOriginDecl = new CssConstantValue<BoxModel>(CssKeywords.BorderBox, BoxModel.PaddingBox);
|
||||
public static readonly ICssValue BackgroundClipDecl = new CssConstantValue<BoxModel>(CssKeywords.BorderBox, BoxModel.BorderBox);
|
||||
|
@ -204,13 +204,13 @@ namespace AngleSharp.Css
|
|||
public static readonly ICssValue ZIndexDecl = new CssConstantValue<CssLengthValue>(CssKeywords.Auto, CssLengthValue.Auto);
|
||||
public static readonly ICssValue WidthDecl = CssLengthValue.Auto;
|
||||
public static readonly ICssValue HeightDecl = CssLengthValue.Auto;
|
||||
public static readonly ICssValue ScrollbarTrackColorDecl = CssColors.GetColor("scrollbar");
|
||||
public static readonly ICssValue ScrollbarShadowColorDecl = CssColors.GetColor("threeddarkshadow");
|
||||
public static readonly ICssValue ScrollbarHighlightColorDecl = CssColors.GetColor("threedhighlight");
|
||||
public static readonly ICssValue ScrollbarFaceColorDecl = CssColors.GetColor("threedface");
|
||||
public static readonly ICssValue ScrollbarDarkshadowColorDecl = CssColors.GetColor("threeddarkshadow");
|
||||
public static readonly ICssValue ScrollbarTrackColorDecl = CssColors.GetColor("scrollbar")!;
|
||||
public static readonly ICssValue ScrollbarShadowColorDecl = CssColors.GetColor("threeddarkshadow")!;
|
||||
public static readonly ICssValue ScrollbarHighlightColorDecl = CssColors.GetColor("threedhighlight")!;
|
||||
public static readonly ICssValue ScrollbarFaceColorDecl = CssColors.GetColor("threedface")!;
|
||||
public static readonly ICssValue ScrollbarDarkshadowColorDecl = CssColors.GetColor("threeddarkshadow")!;
|
||||
public static readonly ICssValue ScrollbarBaseColorDecl = CssColorValue.Transparent;
|
||||
public static readonly ICssValue ScrollbarArrowColorDecl = CssColors.GetColor("buttontext");
|
||||
public static readonly ICssValue ScrollbarArrowColorDecl = CssColors.GetColor("buttontext")!;
|
||||
public static readonly ICssValue Scrollbar3dLightColorDecl = CssColorValue.White;
|
||||
public static readonly ICssValue LetterSpacingDecl = CssLengthValue.Normal;
|
||||
public static readonly ICssValue FontSizeAdjustDecl = new CssLengthValue(1.0, CssLengthValue.Unit.Em);
|
||||
|
|
|
@ -4,15 +4,10 @@
|
|||
using AngleSharp.Text;
|
||||
using System;
|
||||
|
||||
sealed class ClassValueConverter<T> : IValueConverter
|
||||
sealed class ClassValueConverter<T>(Func<StringSource, T> converter) : IValueConverter
|
||||
where T : class, ICssValue
|
||||
{
|
||||
private readonly Func<StringSource, T> _converter;
|
||||
|
||||
public ClassValueConverter(Func<StringSource, T> converter)
|
||||
{
|
||||
_converter = converter;
|
||||
}
|
||||
private readonly Func<StringSource, T> _converter = converter;
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
{
|
||||
|
|
|
@ -4,23 +4,17 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Css.Parser;
|
||||
using AngleSharp.Css.Values;
|
||||
using AngleSharp.Text;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
sealed class CounterValueConverter : IValueConverter
|
||||
sealed class CounterValueConverter(ICssValue defaultValue) : IValueConverter
|
||||
{
|
||||
private static readonly CssCounterValue[] NoneValue = Array.Empty<CssCounterValue>();
|
||||
private static readonly CssCounterValue[] NoneValue = [];
|
||||
|
||||
private readonly ICssValue _defaultValue;
|
||||
private readonly ICssValue _defaultValue = defaultValue;
|
||||
|
||||
public CounterValueConverter(ICssValue defaultValue)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
_defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
{
|
||||
var counters = new List<CssCounterValue>();
|
||||
var counters = new List<ICssValue>();
|
||||
|
||||
if (!source.IsIdentifier(CssKeywords.None))
|
||||
{
|
||||
|
@ -39,7 +33,7 @@ namespace AngleSharp.Css.Converters
|
|||
counters.Add(new CssCounterValue(name, value));
|
||||
}
|
||||
|
||||
return new CssTupleValue<CssCounterValue>(counters.ToArray());
|
||||
return new CssTupleValue([.. counters]);
|
||||
}
|
||||
|
||||
return new CssConstantValue<CssCounterValue[]>(CssKeywords.None, NoneValue);
|
||||
|
|
|
@ -7,22 +7,16 @@ namespace AngleSharp.Css.Converters
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
sealed class DictionaryValueConverter<T> : IValueConverter
|
||||
sealed class DictionaryValueConverter<T>(IDictionary<String, T> values) : IValueConverter
|
||||
{
|
||||
private readonly IDictionary<String, T> _values;
|
||||
private readonly IDictionary<String, T> _values = values;
|
||||
|
||||
public DictionaryValueConverter(IDictionary<String, T> values)
|
||||
{
|
||||
_values = values;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var pos = source.Index;
|
||||
var ident = source.ParseIdent();
|
||||
var mode = default(T);
|
||||
|
||||
if (ident != null && _values.TryGetValue(ident, out mode))
|
||||
if (ident is not null && _values.TryGetValue(ident, out var mode))
|
||||
{
|
||||
return new CssConstantValue<T>(ident.ToLowerInvariant(), mode);
|
||||
}
|
||||
|
|
|
@ -6,28 +6,23 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Text;
|
||||
using System;
|
||||
|
||||
sealed class FlowRelativeValueConverter : IValueConverter
|
||||
sealed class FlowRelativeValueConverter(IValueConverter converter) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter _converter;
|
||||
private readonly IValueConverter _converter = converter;
|
||||
|
||||
public FlowRelativeValueConverter(IValueConverter converter)
|
||||
{
|
||||
_converter = converter;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var options = new ICssValue[2];
|
||||
var length = 0;
|
||||
|
||||
for (var i = 0; i < options.Length; i++)
|
||||
{
|
||||
options[i] = _converter.Convert(source);
|
||||
var option = _converter.Convert(source);
|
||||
source.SkipSpacesAndComments();
|
||||
|
||||
if (options[length] != null)
|
||||
if (option is not null)
|
||||
{
|
||||
length++;
|
||||
options[length++] = option;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,20 +6,15 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Text;
|
||||
using System;
|
||||
|
||||
sealed class IdentifierValueConverter : IValueConverter
|
||||
sealed class IdentifierValueConverter(Func<StringSource, String> check) : IValueConverter
|
||||
{
|
||||
private readonly Func<StringSource, String> _check;
|
||||
private readonly Func<StringSource, String> _check = check;
|
||||
|
||||
public IdentifierValueConverter(Func<StringSource, String> check)
|
||||
{
|
||||
_check = check;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var result = _check.Invoke(source);
|
||||
|
||||
if (result != null)
|
||||
if (result is not null)
|
||||
{
|
||||
return new CssIdentifierValue(result);
|
||||
}
|
||||
|
@ -28,18 +23,12 @@ namespace AngleSharp.Css.Converters
|
|||
}
|
||||
}
|
||||
|
||||
sealed class IdentifierValueConverter<T> : IValueConverter
|
||||
sealed class IdentifierValueConverter<T>(String identifier, T result) : IValueConverter
|
||||
{
|
||||
private readonly String _identifier;
|
||||
private readonly T _result;
|
||||
private readonly String _identifier = identifier;
|
||||
private readonly T _result = result;
|
||||
|
||||
public IdentifierValueConverter(String identifier, T result)
|
||||
{
|
||||
_identifier = identifier;
|
||||
_result = result;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
if (source.IsIdentifier(_identifier))
|
||||
{
|
||||
|
|
|
@ -6,16 +6,11 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Text;
|
||||
using System.Collections.Generic;
|
||||
|
||||
sealed class ListValueConverter : IValueConverter
|
||||
sealed class ListValueConverter(IValueConverter converter) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter _converter;
|
||||
private readonly IValueConverter _converter = converter;
|
||||
|
||||
public ListValueConverter(IValueConverter converter)
|
||||
{
|
||||
_converter = converter;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var values = new List<ICssValue>();
|
||||
|
||||
|
@ -33,7 +28,7 @@ namespace AngleSharp.Css.Converters
|
|||
values.Add(value);
|
||||
}
|
||||
|
||||
return values.Count > 0 ? new CssListValue(values.ToArray()) : null;
|
||||
return values.Count > 0 ? new CssListValue([.. values]) : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,22 +7,14 @@ namespace AngleSharp.Css.Converters
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
sealed class OneOrMoreValueConverter : IValueConverter
|
||||
sealed class OneOrMoreValueConverter(IValueConverter converter, Int32 minimum, Int32 maximum, String separator) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter _converter;
|
||||
private readonly Int32 _minimum;
|
||||
private readonly Int32 _maximum;
|
||||
private readonly String _separator;
|
||||
private readonly IValueConverter _converter = converter;
|
||||
private readonly Int32 _minimum = minimum;
|
||||
private readonly Int32 _maximum = maximum;
|
||||
private readonly String _separator = separator;
|
||||
|
||||
public OneOrMoreValueConverter(IValueConverter converter, Int32 minimum, Int32 maximum, String separator)
|
||||
{
|
||||
_converter = converter;
|
||||
_minimum = minimum;
|
||||
_maximum = maximum;
|
||||
_separator = separator;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var values = new List<ICssValue>();
|
||||
|
||||
|
@ -37,7 +29,7 @@ namespace AngleSharp.Css.Converters
|
|||
values.Add(value);
|
||||
}
|
||||
|
||||
return values.Count >= _minimum ? new CssTupleValue(values.ToArray(), _separator) : null;
|
||||
return values.Count >= _minimum ? new CssTupleValue([.. values], _separator) : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,18 +4,12 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Css.Values;
|
||||
using AngleSharp.Text;
|
||||
|
||||
sealed class OptionValueConverter : IValueConverter
|
||||
sealed class OptionValueConverter(IValueConverter converter, ICssValue defaultValue) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter _converter;
|
||||
private readonly ICssValue _defaultValue;
|
||||
private readonly IValueConverter _converter = converter;
|
||||
private readonly ICssValue _defaultValue = defaultValue;
|
||||
|
||||
public OptionValueConverter(IValueConverter converter, ICssValue defaultValue)
|
||||
{
|
||||
_converter = converter;
|
||||
_defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
if (source.IsDone || source.Current == Symbols.Comma)
|
||||
{
|
||||
|
|
|
@ -1,19 +1,14 @@
|
|||
namespace AngleSharp.Css.Converters
|
||||
namespace AngleSharp.Css.Converters
|
||||
{
|
||||
using AngleSharp.Css.Dom;
|
||||
using AngleSharp.Css.Parser;
|
||||
using AngleSharp.Text;
|
||||
|
||||
sealed class OrValueConverter : IValueConverter
|
||||
sealed class OrValueConverter(IValueConverter[] converters) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter[] _converters;
|
||||
private readonly IValueConverter[] _converters = converters;
|
||||
|
||||
public OrValueConverter(IValueConverter[] converters)
|
||||
{
|
||||
_converters = converters;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var start = source.Index;
|
||||
|
||||
|
|
|
@ -5,14 +5,9 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Css.Values;
|
||||
using AngleSharp.Text;
|
||||
|
||||
sealed class OrderedOptionsConverter: IValueConverter
|
||||
sealed class OrderedOptionsConverter(params IValueConverter[] converters) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter[] _converters;
|
||||
|
||||
public OrderedOptionsConverter(params IValueConverter[] converters)
|
||||
{
|
||||
_converters = converters;
|
||||
}
|
||||
private readonly IValueConverter[] _converters = converters;
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
{
|
||||
|
|
|
@ -6,28 +6,23 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Text;
|
||||
using System;
|
||||
|
||||
sealed class PeriodicValueConverter : IValueConverter
|
||||
sealed class PeriodicValueConverter(IValueConverter converter) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter _converter;
|
||||
private readonly IValueConverter _converter = converter;
|
||||
|
||||
public PeriodicValueConverter(IValueConverter converter)
|
||||
{
|
||||
_converter = converter;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var options = new ICssValue[4];
|
||||
var length = 0;
|
||||
|
||||
for (var i = 0; i < options.Length; i++)
|
||||
{
|
||||
options[i] = _converter.Convert(source);
|
||||
var option = _converter.Convert(source);
|
||||
source.SkipSpacesAndComments();
|
||||
|
||||
if (options[length] != null)
|
||||
if (option is not null)
|
||||
{
|
||||
length++;
|
||||
options[length++] = option;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,28 +6,23 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Text;
|
||||
using System;
|
||||
|
||||
sealed class RadiusValueConverter : IValueConverter
|
||||
sealed class RadiusValueConverter(IValueConverter converter) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter _converter;
|
||||
private readonly IValueConverter _converter = converter;
|
||||
|
||||
public RadiusValueConverter(IValueConverter converter)
|
||||
{
|
||||
_converter = converter;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var options = new ICssValue[2];
|
||||
var length = 0;
|
||||
|
||||
for (var i = 0; i < options.Length; i++)
|
||||
{
|
||||
options[i] = _converter.Convert(source);
|
||||
var option = _converter.Convert(source);
|
||||
source.SkipSpacesAndComments();
|
||||
|
||||
if (options[length] != null)
|
||||
if (option is not null)
|
||||
{
|
||||
length++;
|
||||
options[length++] = option;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,17 +5,12 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Text;
|
||||
using System;
|
||||
|
||||
sealed class SeparatedEnumsConverter : IValueConverter
|
||||
sealed class SeparatedEnumsConverter(IValueConverter[] converters, Char seperator) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter[] _converters;
|
||||
private readonly Char _seperator;
|
||||
private readonly IValueConverter[] _converters = converters;
|
||||
private readonly Char _seperator = seperator;
|
||||
|
||||
public SeparatedEnumsConverter(IValueConverter[] converters, Char seperator)
|
||||
{
|
||||
_converters = converters;
|
||||
_seperator = seperator;
|
||||
}
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var value = _converters[0].Convert(source);
|
||||
|
||||
|
|
|
@ -5,18 +5,12 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Text;
|
||||
using System;
|
||||
|
||||
sealed class SeparatorConverter : IValueConverter
|
||||
sealed class SeparatorConverter(IValueConverter converter, Char seperator) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter _converter;
|
||||
private readonly Char _seperator;
|
||||
private readonly IValueConverter _converter = converter;
|
||||
private readonly Char _seperator = seperator;
|
||||
|
||||
public SeparatorConverter(IValueConverter converter, Char seperator)
|
||||
{
|
||||
_converter = converter;
|
||||
_seperator = seperator;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var value = _converter.Convert(source);
|
||||
|
||||
|
|
|
@ -5,16 +5,11 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Css.Values;
|
||||
using AngleSharp.Text;
|
||||
|
||||
sealed class StandardValueConverter : IValueConverter
|
||||
sealed class StandardValueConverter(ICssValue defaultValue) : IValueConverter
|
||||
{
|
||||
private readonly ICssValue _defaultValue;
|
||||
private readonly ICssValue _defaultValue = defaultValue;
|
||||
|
||||
public StandardValueConverter(ICssValue defaultValue)
|
||||
{
|
||||
_defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
var ident = source.ParseIdent();
|
||||
|
||||
|
|
|
@ -4,19 +4,11 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Text;
|
||||
using System;
|
||||
|
||||
sealed class StructValueConverter<T> : IValueConverter
|
||||
sealed class StructValueConverter<T>(Func<StringSource, T?> converter) : IValueConverter
|
||||
where T : struct, ICssValue
|
||||
{
|
||||
private readonly Func<StringSource, T?> _converter;
|
||||
private readonly Func<StringSource, T?> _converter = converter;
|
||||
|
||||
public StructValueConverter(Func<StringSource, T?> converter)
|
||||
{
|
||||
_converter = converter;
|
||||
}
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
{
|
||||
return _converter.Invoke(source);
|
||||
}
|
||||
public ICssValue? Convert(StringSource source) => _converter.Invoke(source);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,14 +5,9 @@ namespace AngleSharp.Css.Converters
|
|||
using AngleSharp.Css.Values;
|
||||
using AngleSharp.Text;
|
||||
|
||||
sealed class UnorderedOptionsConverter : IValueConverter
|
||||
sealed class UnorderedOptionsConverter(params IValueConverter[] converters) : IValueConverter
|
||||
{
|
||||
private readonly IValueConverter[] _converters;
|
||||
|
||||
public UnorderedOptionsConverter(params IValueConverter[] converters)
|
||||
{
|
||||
_converters = converters;
|
||||
}
|
||||
private readonly IValueConverter[] _converters = converters;
|
||||
|
||||
public ICssValue Convert(StringSource source)
|
||||
{
|
||||
|
|
|
@ -62,7 +62,7 @@ namespace AngleSharp
|
|||
/// <param name="configuration">The configuration to extend.</param>
|
||||
/// <param name="renderDevice">The custom device to register, if any.</param>
|
||||
/// <returns>The new instance with the render device.</returns>
|
||||
public static IConfiguration WithRenderDevice(this IConfiguration configuration, IRenderDevice renderDevice = null) =>
|
||||
public static IConfiguration WithRenderDevice(this IConfiguration configuration, IRenderDevice? renderDevice = null) =>
|
||||
configuration.WithOnly<IRenderDevice>(renderDevice ?? new DefaultRenderDevice());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace AngleSharp.Css
|
|||
{
|
||||
#region Fields
|
||||
|
||||
private ICssStyleSheet _default;
|
||||
private ICssStyleSheet? _default;
|
||||
|
||||
#endregion
|
||||
|
||||
|
|
|
@ -33,13 +33,13 @@ namespace AngleSharp.Css
|
|||
public async Task<IStyleSheet> ParseStylesheetAsync(IResponse response, StyleOptions options, CancellationToken cancel)
|
||||
{
|
||||
var context = options.Document.Context;
|
||||
var parser = context.GetService<ICssParser>();
|
||||
var parser = context.GetService<ICssParser>() ?? throw new InvalidOperationException("No parser found.");
|
||||
var url = response.Address?.Href;
|
||||
var source = new TextSource(response.Content);
|
||||
var sheet = new CssStyleSheet(context, source)
|
||||
{
|
||||
IsDisabled = options.IsDisabled,
|
||||
Href = url
|
||||
Href = url!
|
||||
};
|
||||
sheet.SetOwner(options.Element);
|
||||
return await parser.ParseStyleSheetAsync(sheet, cancel).ConfigureAwait(false);
|
||||
|
|
|
@ -7,61 +7,51 @@ namespace AngleSharp.Css
|
|||
/// <summary>
|
||||
/// A collection of useful information regarding a CSS declaration.
|
||||
/// </summary>
|
||||
public class DeclarationInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// <remarks>
|
||||
/// Constructs a new declaration info.
|
||||
/// </summary>
|
||||
/// </remarks>
|
||||
/// <param name="name">The name of the declaration.</param>
|
||||
/// <param name="converter">The value converter.</param>
|
||||
/// <param name="flags">The property flags.</param>
|
||||
/// <param name="initialValue">The initial value, if any.</param>
|
||||
/// <param name="shorthands">The names of the associated shorthand declarations, if any.</param>
|
||||
/// <param name="longhands">The names of the associated longhand declarations, if any.</param>
|
||||
public DeclarationInfo(String name, IValueConverter converter, PropertyFlags flags = PropertyFlags.None, ICssValue initialValue = null, String[] shorthands = null, String[] longhands = null)
|
||||
public class DeclarationInfo(String name, IValueConverter converter, PropertyFlags flags = PropertyFlags.None, ICssValue? initialValue = null, String[]? shorthands = null, String[]? longhands = null)
|
||||
{
|
||||
Name = name;
|
||||
Converter = initialValue != null ? Or(converter, AssignInitial(initialValue)) : converter;
|
||||
Aggregator = converter as IValueAggregator;
|
||||
Flags = flags;
|
||||
InitialValue = initialValue;
|
||||
Shorthands = shorthands ?? Array.Empty<String>();
|
||||
Longhands = longhands ?? Array.Empty<String>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the declaration name.
|
||||
/// </summary>
|
||||
public String Name { get; }
|
||||
public String Name { get; } = name;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the initial value of the declaration, if any.
|
||||
/// </summary>
|
||||
public ICssValue InitialValue { get; }
|
||||
public ICssValue? InitialValue { get; } = initialValue;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the associated value converter.
|
||||
/// </summary>
|
||||
public IValueConverter Converter { get; }
|
||||
public IValueConverter Converter { get; } = initialValue != null ? Or(converter, AssignInitial(initialValue)) : converter;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the value aggregator, if any.
|
||||
/// </summary>
|
||||
public IValueAggregator Aggregator { get; }
|
||||
public IValueAggregator? Aggregator { get; } = converter as IValueAggregator;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the flags of the declaration.
|
||||
/// </summary>
|
||||
public PropertyFlags Flags { get; }
|
||||
public PropertyFlags Flags { get; } = flags;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the names of related shorthand declarations.
|
||||
/// </summary>
|
||||
public String[] Shorthands { get; }
|
||||
public String[] Shorthands { get; } = shorthands ?? [];
|
||||
|
||||
/// <summary>
|
||||
/// Gets the names of related required longhand declarations.
|
||||
/// </summary>
|
||||
public String[] Longhands { get; }
|
||||
public String[] Longhands { get; } = longhands ?? [];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,12 +14,12 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static IValueConverter Converter = new AnimationAggregator();
|
||||
|
||||
public static ICssValue InitialValue = null;
|
||||
public static ICssValue? InitialValue = null;
|
||||
|
||||
public static PropertyFlags Flags = PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.AnimationDuration,
|
||||
PropertyNames.AnimationTimingFunction,
|
||||
PropertyNames.AnimationDelay,
|
||||
|
@ -28,7 +28,7 @@ namespace AngleSharp.Css.Declarations
|
|||
PropertyNames.AnimationFillMode,
|
||||
PropertyNames.AnimationPlayState,
|
||||
PropertyNames.AnimationName,
|
||||
};
|
||||
];
|
||||
|
||||
sealed class AnimationAggregator : IValueAggregator, IValueConverter
|
||||
{
|
||||
|
@ -42,9 +42,9 @@ namespace AngleSharp.Css.Declarations
|
|||
PlayStateConverter.Option(InitialValues.AnimationPlayStateDecl),
|
||||
IdentifierConverter.Option(InitialValues.AnimationNameDecl)).FromList();
|
||||
|
||||
public ICssValue Convert(StringSource source) => ListConverter.Convert(source);
|
||||
public ICssValue? Convert(StringSource source) => ListConverter.Convert(source);
|
||||
|
||||
public ICssValue Merge(ICssValue[] values)
|
||||
public ICssValue? Merge(ICssValue[] values)
|
||||
{
|
||||
var duration = values[0] as CssListValue;
|
||||
var timing = values[1] as CssListValue;
|
||||
|
@ -63,12 +63,12 @@ namespace AngleSharp.Css.Declarations
|
|||
return null;
|
||||
}
|
||||
|
||||
public ICssValue[] Split(ICssValue value)
|
||||
public ICssValue?[]? Split(ICssValue value)
|
||||
{
|
||||
if (value is CssListValue list)
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
return
|
||||
[
|
||||
CreateMultiple(list, 0),
|
||||
CreateMultiple(list, 1),
|
||||
CreateMultiple(list, 2),
|
||||
|
@ -77,13 +77,13 @@ namespace AngleSharp.Css.Declarations
|
|||
CreateMultiple(list, 5),
|
||||
CreateMultiple(list, 6),
|
||||
CreateMultiple(list, 7),
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ICssValue CreateMultiple(CssListValue animation, Int32 index)
|
||||
private static ICssValue? CreateMultiple(CssListValue animation, Int32 index)
|
||||
{
|
||||
var values = animation.Items.OfType<CssTupleValue>().Select(m => m.Items[index]);
|
||||
|
||||
|
@ -95,15 +95,15 @@ namespace AngleSharp.Css.Declarations
|
|||
return null;
|
||||
}
|
||||
|
||||
private static ICssValue CreateValue(CssListValue duration, CssListValue timing, CssListValue delay, CssListValue iterationCount, CssListValue direction, CssListValue fillMode, CssListValue playState, CssListValue name)
|
||||
private static ICssValue CreateValue(CssListValue? duration, CssListValue? timing, CssListValue? delay, CssListValue? iterationCount, CssListValue? direction, CssListValue? fillMode, CssListValue? playState, CssListValue? name)
|
||||
{
|
||||
var items = (duration ?? timing ?? delay ?? iterationCount ?? direction ?? fillMode ?? playState ?? name).Items;
|
||||
var layers = new ICssValue[items.Length];
|
||||
var items = (duration ?? timing ?? delay ?? iterationCount ?? direction ?? fillMode ?? playState ?? name)?.Items;
|
||||
var layers = new ICssValue[items?.Length ?? 0];
|
||||
|
||||
for (var i = 0; i < items.Length; i++)
|
||||
{
|
||||
layers[i] = new CssTupleValue(new[]
|
||||
for (var i = 0; i < layers.Length; i++)
|
||||
{
|
||||
layers[i] = new CssTupleValue(
|
||||
[
|
||||
GetValue(duration, i),
|
||||
GetValue(timing, i),
|
||||
GetValue(delay, i),
|
||||
|
@ -112,13 +112,13 @@ namespace AngleSharp.Css.Declarations
|
|||
GetValue(fillMode, i),
|
||||
GetValue(playState, i),
|
||||
GetValue(name, i),
|
||||
});
|
||||
]);
|
||||
}
|
||||
|
||||
return new CssListValue(layers);
|
||||
}
|
||||
|
||||
private static ICssValue GetValue(CssListValue container, Int32 index)
|
||||
private static ICssValue? GetValue(CssListValue? container, Int32 index)
|
||||
{
|
||||
if (container != null && index < container.Items.Length)
|
||||
{
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.AnimationDelay;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Animation,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = TimeConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.AnimationDirection;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Animation,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = AnimationDirectionConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.AnimationDuration;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Animation,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = TimeConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.AnimationFillMode;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Animation,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = AnimationFillStyleConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.AnimationIterationCount;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Animation,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = PositiveOrInfiniteNumberConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.AnimationName;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Animation,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = Or(IdentifierConverter.FromList(), None);
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.AnimationPlayState;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Animation,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = PlayStateConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.AnimationTimingFunction;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Animation,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = TransitionConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundAttachment;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Background,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BackgroundAttachmentConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundClip;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Background,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BoxModelConverter.FromList();
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundColor;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Background,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = CurrentColorConverter;
|
||||
|
||||
|
|
|
@ -14,12 +14,12 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static IValueConverter Converter = new BackgroundAggregator();
|
||||
|
||||
public static ICssValue InitialValue = null;
|
||||
public static ICssValue? InitialValue = null;
|
||||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BackgroundImage,
|
||||
PropertyNames.BackgroundPosition,
|
||||
PropertyNames.BackgroundSize,
|
||||
|
@ -28,11 +28,11 @@ namespace AngleSharp.Css.Declarations
|
|||
PropertyNames.BackgroundOrigin,
|
||||
PropertyNames.BackgroundClip,
|
||||
PropertyNames.BackgroundColor,
|
||||
};
|
||||
];
|
||||
|
||||
sealed class BackgroundAggregator : IValueAggregator, IValueConverter
|
||||
{
|
||||
public ICssValue Convert(StringSource source)
|
||||
public ICssValue? Convert(StringSource source)
|
||||
{
|
||||
// [ <bg-layer> , ]* <final-bg-layer>
|
||||
// where:
|
||||
|
@ -177,7 +177,7 @@ namespace AngleSharp.Css.Declarations
|
|||
return new CssBackgroundValue(new CssListValue(layers.OfType<ICssValue>().ToArray()), color ?? new CssInitialValue(InitialValues.BackgroundColorDecl));
|
||||
}
|
||||
|
||||
public ICssValue Merge(ICssValue[] values)
|
||||
public ICssValue? Merge(ICssValue[] values)
|
||||
{
|
||||
var image = GetList(values[0]);
|
||||
var position = GetList(values[1]);
|
||||
|
@ -197,7 +197,7 @@ namespace AngleSharp.Css.Declarations
|
|||
return null;
|
||||
}
|
||||
|
||||
private static CssListValue GetList(ICssValue value)
|
||||
private static CssListValue? GetList(ICssValue value)
|
||||
{
|
||||
if (value is CssListValue list)
|
||||
{
|
||||
|
@ -211,12 +211,12 @@ namespace AngleSharp.Css.Declarations
|
|||
return null;
|
||||
}
|
||||
|
||||
public ICssValue[] Split(ICssValue value)
|
||||
public ICssValue?[]? Split(ICssValue value)
|
||||
{
|
||||
if (value is CssBackgroundValue background)
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
return
|
||||
[
|
||||
CreateMultiple(background, m => m.Image, InitialValues.BackgroundImageDecl),
|
||||
CreateMultiple(background, m => m.Position, InitialValues.BackgroundPositionDecl),
|
||||
CreateMultiple(background, m => m.Size, InitialValues.BackgroundSizeDecl),
|
||||
|
@ -225,13 +225,13 @@ namespace AngleSharp.Css.Declarations
|
|||
CreateMultiple(background, m => m.Origin, InitialValues.BackgroundOriginDecl),
|
||||
CreateMultiple(background, m => m.Clip, InitialValues.BackgroundClipDecl),
|
||||
background.Color,
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ICssValue CreateLayers(CssListValue image, CssListValue attachment, CssListValue clip, CssListValue position, CssListValue origin, CssListValue repeat, CssListValue size)
|
||||
private static ICssValue? CreateLayers(CssListValue? image, CssListValue? attachment, CssListValue? clip, CssListValue? position, CssListValue? origin, CssListValue? repeat, CssListValue? size)
|
||||
{
|
||||
var count = GetCount(image, attachment, clip, position, size, repeat, origin);
|
||||
|
||||
|
@ -257,7 +257,7 @@ namespace AngleSharp.Css.Declarations
|
|||
return null;
|
||||
}
|
||||
|
||||
private static Int32 GetCount(params CssListValue[] lists)
|
||||
private static Int32 GetCount(params CssListValue?[] lists)
|
||||
{
|
||||
var count = 0;
|
||||
|
||||
|
@ -269,7 +269,7 @@ namespace AngleSharp.Css.Declarations
|
|||
return count;
|
||||
}
|
||||
|
||||
private static ICssValue GetValue(CssListValue container, Int32 index)
|
||||
private static ICssValue? GetValue(CssListValue? container, Int32 index)
|
||||
{
|
||||
if (container != null && index < container.Items.Length)
|
||||
{
|
||||
|
@ -279,7 +279,7 @@ namespace AngleSharp.Css.Declarations
|
|||
return null;
|
||||
}
|
||||
|
||||
private static ICssValue CreateMultiple(CssBackgroundValue background, Func<CssBackgroundLayerValue, ICssValue> getValue, ICssValue initialValue)
|
||||
private static ICssValue? CreateMultiple(CssBackgroundValue background, Func<CssBackgroundLayerValue, ICssValue> getValue, ICssValue initialValue)
|
||||
{
|
||||
if (background.Layers is CssListValue layers)
|
||||
{
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundImage;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Background,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = MultipleImageSourceConverter;
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundOrigin;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Background,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BoxModelConverter.FromList();
|
||||
|
||||
|
|
|
@ -12,16 +12,16 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundPosition;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Background,
|
||||
};
|
||||
];
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BackgroundPositionX,
|
||||
PropertyNames.BackgroundPositionY,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = new BackgroundPositionAggregator();
|
||||
|
||||
|
@ -63,11 +63,11 @@ namespace AngleSharp.Css.Declarations
|
|||
var points = list.Items.OfType<CssPoint2D>();
|
||||
var x = points.Select(m => m.X).ToArray();
|
||||
var y = points.Select(m => m.Y).ToArray();
|
||||
return new ICssValue[]
|
||||
{
|
||||
return
|
||||
[
|
||||
new CssListValue(x),
|
||||
new CssListValue(y),
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundPositionX;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BackgroundPosition,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = PointXConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundPositionY;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BackgroundPosition,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = PointYConverter.FromList();
|
||||
|
||||
|
|
|
@ -12,16 +12,16 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundRepeat;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Background,
|
||||
};
|
||||
];
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BackgroundRepeatX,
|
||||
PropertyNames.BackgroundRepeatY,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = new BackgroundRepeatAggregator();
|
||||
|
||||
|
@ -63,11 +63,11 @@ namespace AngleSharp.Css.Declarations
|
|||
var repeats = list.Items.OfType<CssImageRepeatsValue>();
|
||||
var h = repeats.Select(m => m.Horizontal).ToArray();
|
||||
var v = repeats.Select(m => m.Vertical).ToArray();
|
||||
return new ICssValue[]
|
||||
{
|
||||
return
|
||||
[
|
||||
new CssListValue(h),
|
||||
new CssListValue(v),
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundRepeatX;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BackgroundRepeat,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BackgroundRepeatConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundRepeatY;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BackgroundRepeat,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BackgroundRepeatConverter.FromList();
|
||||
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BackgroundSize;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Background,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BackgroundSizeConverter.FromList();
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderBottomColor;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderBottom,
|
||||
PropertyNames.BorderColor,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = CurrentColorConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderBottom;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = WithBorderSide(
|
||||
InitialValues.BorderBottomWidthDecl,
|
||||
|
@ -22,11 +22,11 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderBottomWidth,
|
||||
PropertyNames.BorderBottomStyle,
|
||||
PropertyNames.BorderBottomColor,
|
||||
};
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderBottomLeftRadius;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderRadius,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BorderRadiusLonghandConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderBottomRightRadius;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderRadius,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BorderRadiusLonghandConverter;
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderBottomStyle;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderBottom,
|
||||
PropertyNames.BorderStyle,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineStyleConverter;
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderBottomWidth;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderBottom,
|
||||
PropertyNames.BorderWidth,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineWidthConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderColor;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = AggregatePeriodic(CurrentColorConverter);
|
||||
|
||||
|
@ -19,12 +19,12 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Hashless | PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderTopColor,
|
||||
PropertyNames.BorderRightColor,
|
||||
PropertyNames.BorderBottomColor,
|
||||
PropertyNames.BorderLeftColor,
|
||||
};
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,12 +18,12 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderWidth,
|
||||
PropertyNames.BorderStyle,
|
||||
PropertyNames.BorderColor,
|
||||
};
|
||||
];
|
||||
|
||||
sealed class BorderAggregator : IValueAggregator, IValueConverter
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
if (value is CssTupleValue options)
|
||||
{
|
||||
return options.ToArray();
|
||||
return [.. options];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -17,14 +17,14 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderImageOutset,
|
||||
PropertyNames.BorderImageRepeat,
|
||||
PropertyNames.BorderImageSlice,
|
||||
PropertyNames.BorderImageSource,
|
||||
PropertyNames.BorderImageWidth,
|
||||
};
|
||||
];
|
||||
|
||||
sealed class BorderImageValueConverter : IValueConverter
|
||||
{
|
||||
|
@ -103,7 +103,7 @@ namespace AngleSharp.Css.Declarations
|
|||
}
|
||||
else
|
||||
{
|
||||
return new CssTupleValue(new[] { repeatX, repeatY });
|
||||
return new CssTupleValue([repeatX, repeatY]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -137,25 +137,25 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
if (value is CssBorderImageValue img)
|
||||
{
|
||||
return new ICssValue[]
|
||||
{
|
||||
return
|
||||
[
|
||||
img.Outsets,
|
||||
img.Repeat,
|
||||
img.Slice,
|
||||
img.Image,
|
||||
img.Widths,
|
||||
};
|
||||
];
|
||||
}
|
||||
else if (value is CssConstantValue<Object> constant)
|
||||
{
|
||||
return new ICssValue[]
|
||||
{
|
||||
return
|
||||
[
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
constant,
|
||||
null,
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderImageOutset;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderImage,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LengthOrPercentConverter.Periodic();
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderImageRepeat;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderImage,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BorderImageRepeatConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderImageSlice;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderImage,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BorderImageSliceConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderImageSource;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderImage,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = OptionalImageSourceConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderImageWidth;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderImage,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BorderImageWidthConverter;
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderLeftColor;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderLeft,
|
||||
PropertyNames.BorderColor,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = CurrentColorConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderLeft;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = WithBorderSide(
|
||||
InitialValues.BorderLeftWidthDecl,
|
||||
|
@ -22,11 +22,11 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderLeftWidth,
|
||||
PropertyNames.BorderLeftStyle,
|
||||
PropertyNames.BorderLeftColor,
|
||||
};
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderLeftStyle;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderLeft,
|
||||
PropertyNames.BorderStyle,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineStyleConverter;
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderLeftWidth;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderLeft,
|
||||
PropertyNames.BorderWidth,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineWidthConverter;
|
||||
|
||||
|
|
|
@ -18,13 +18,13 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderTopLeftRadius,
|
||||
PropertyNames.BorderTopRightRadius,
|
||||
PropertyNames.BorderBottomRightRadius,
|
||||
PropertyNames.BorderBottomLeftRadius,
|
||||
};
|
||||
];
|
||||
|
||||
sealed class BorderRadiusAggregator : IValueAggregator, IValueConverter
|
||||
{
|
||||
|
@ -57,8 +57,8 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
if (topLeft != null && topRight != null && bottomRight != null && bottomLeft != null)
|
||||
{
|
||||
var horizontal = new CssPeriodicValue(new[] { topLeft.Width, topRight.Width, bottomRight.Width, bottomLeft.Width });
|
||||
var vertical = new CssPeriodicValue(new[] { topLeft.Height, topRight.Height, bottomRight.Height, bottomLeft.Height });
|
||||
var horizontal = new CssPeriodicValue([topLeft.Width, topRight.Width, bottomRight.Width, bottomLeft.Width]);
|
||||
var vertical = new CssPeriodicValue([topLeft.Height, topRight.Height, bottomRight.Height, bottomLeft.Height]);
|
||||
return new CssBorderRadiusValue(horizontal, vertical);
|
||||
}
|
||||
|
||||
|
@ -69,13 +69,13 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
if (value is CssBorderRadiusValue radius)
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
return
|
||||
[
|
||||
Both(radius.Horizontal.Top, radius.Vertical.Top),
|
||||
Both(radius.Horizontal.Right, radius.Vertical.Right),
|
||||
Both(radius.Horizontal.Bottom, radius.Vertical.Bottom),
|
||||
Both(radius.Horizontal.Left, radius.Vertical.Left),
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderRightColor;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderRight,
|
||||
PropertyNames.BorderColor,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = CurrentColorConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderRight;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = WithBorderSide(
|
||||
InitialValues.BorderRightWidthDecl,
|
||||
|
@ -22,11 +22,11 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderRightWidth,
|
||||
PropertyNames.BorderRightStyle,
|
||||
PropertyNames.BorderRightColor,
|
||||
};
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderRightStyle;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderRight,
|
||||
PropertyNames.BorderStyle,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineStyleConverter;
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderRightWidth;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderRight,
|
||||
PropertyNames.BorderWidth,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineWidthConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderStyle;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = AggregatePeriodic(LineStyleConverter);
|
||||
|
||||
|
@ -19,12 +19,12 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderTopStyle,
|
||||
PropertyNames.BorderRightStyle,
|
||||
PropertyNames.BorderBottomStyle,
|
||||
PropertyNames.BorderLeftStyle,
|
||||
};
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderTopColor;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderTop,
|
||||
PropertyNames.BorderColor,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = CurrentColorConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderTop;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = WithBorderSide(
|
||||
InitialValues.BorderTopWidthDecl,
|
||||
|
@ -22,11 +22,11 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderTopWidth,
|
||||
PropertyNames.BorderTopStyle,
|
||||
PropertyNames.BorderTopColor,
|
||||
};
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderTopLeftRadius;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderRadius,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BorderRadiusLonghandConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderTopRightRadius;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.BorderRadius,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = BorderRadiusLonghandConverter;
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderTopStyle;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderTop,
|
||||
PropertyNames.BorderStyle,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineStyleConverter;
|
||||
|
||||
|
|
|
@ -8,12 +8,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderTopWidth;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
PropertyNames.BorderTop,
|
||||
PropertyNames.BorderWidth,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineWidthConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.BorderWidth;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Border,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = AggregatePeriodic(LineWidthConverter);
|
||||
|
||||
|
@ -19,12 +19,12 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.BorderTopWidth,
|
||||
PropertyNames.BorderRightWidth,
|
||||
PropertyNames.BorderBottomWidth,
|
||||
PropertyNames.BorderLeftWidth,
|
||||
};
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.ColumnCount;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Columns,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = OptionalIntegerConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.ColumnGap;
|
||||
|
||||
public static readonly String[] Shorthands = new[]
|
||||
{
|
||||
public static readonly String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Gap,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = GapConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.ColumnRuleColor;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.ColumnRule,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = ColorConverter;
|
||||
|
||||
|
|
|
@ -16,12 +16,12 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.ColumnRuleColor,
|
||||
PropertyNames.ColumnRuleWidth,
|
||||
PropertyNames.ColumnRuleStyle,
|
||||
};
|
||||
];
|
||||
|
||||
sealed class ColumnRuleValueConverter : IValueConverter
|
||||
{
|
||||
|
@ -87,12 +87,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
if (value is CssTupleValue options)
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
return
|
||||
[
|
||||
options.Items[0],
|
||||
options.Items[1],
|
||||
options.Items[2],
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.ColumnRuleStyle;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.ColumnRule,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineStyleConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.ColumnRuleWidth;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.ColumnRule,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = LineWidthConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.ColumnWidth;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Columns,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = AutoLengthConverter;
|
||||
|
||||
|
|
|
@ -16,11 +16,11 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.ColumnWidth,
|
||||
PropertyNames.ColumnCount,
|
||||
};
|
||||
];
|
||||
|
||||
sealed class ColumnsValueConverter : IValueConverter
|
||||
{
|
||||
|
@ -57,11 +57,11 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
if (value is CssTupleValue options)
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
return
|
||||
[
|
||||
options.Items[0],
|
||||
options.Items[1],
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -36,11 +36,11 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
if (source.IsIdentifier(CssKeywords.Normal))
|
||||
{
|
||||
modes = new ICssValue[] { new NormalContentMode() };
|
||||
modes = [new NormalContentMode()];
|
||||
}
|
||||
else if (source.IsIdentifier(CssKeywords.None))
|
||||
{
|
||||
modes = new ICssValue[] { };
|
||||
modes = [];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -97,7 +97,7 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
}
|
||||
|
||||
modes = ms.ToArray();
|
||||
modes = [.. ms];
|
||||
}
|
||||
|
||||
if (modes != null)
|
||||
|
@ -108,14 +108,9 @@ namespace AngleSharp.Css.Declarations
|
|||
return null;
|
||||
}
|
||||
|
||||
private sealed class ContentValue : ICssValue, IEquatable<ContentValue>
|
||||
private sealed class ContentValue(ICssValue[] modes) : ICssValue, IEquatable<ContentValue>
|
||||
{
|
||||
private readonly ICssValue[] _modes;
|
||||
|
||||
public ContentValue(ICssValue[] modes)
|
||||
{
|
||||
_modes = modes;
|
||||
}
|
||||
private readonly ICssValue[] _modes = modes;
|
||||
|
||||
public String CssText => _modes.Length == 0 ? CssKeywords.None : _modes.Join(" ");
|
||||
|
||||
|
@ -220,14 +215,9 @@ namespace AngleSharp.Css.Declarations
|
|||
/// <summary>
|
||||
/// Text content.
|
||||
/// </summary>
|
||||
private sealed class TextContentMode : ContentMode
|
||||
private sealed class TextContentMode(String text) : ContentMode
|
||||
{
|
||||
private readonly String _text;
|
||||
|
||||
public TextContentMode(String text)
|
||||
{
|
||||
_text = text;
|
||||
}
|
||||
private readonly String _text = text;
|
||||
|
||||
public override String GetCssText() => _text.CssString();
|
||||
|
||||
|
@ -249,14 +239,9 @@ namespace AngleSharp.Css.Declarations
|
|||
/// in scope at this pseudo-element, from outermost to innermost
|
||||
/// separated by the specified string.
|
||||
/// </summary>
|
||||
private sealed class CounterContentMode : ContentMode
|
||||
private sealed class CounterContentMode(CssCounterDefinitionValue counter) : ContentMode
|
||||
{
|
||||
private readonly CssCounterDefinitionValue _counter;
|
||||
|
||||
public CounterContentMode(CssCounterDefinitionValue counter)
|
||||
{
|
||||
_counter = counter;
|
||||
}
|
||||
private readonly CssCounterDefinitionValue _counter = counter;
|
||||
|
||||
public override String GetCssText() => _counter.CssText;
|
||||
|
||||
|
@ -277,14 +262,9 @@ namespace AngleSharp.Css.Declarations
|
|||
/// Returns the value of the element's attribute X as a string. If
|
||||
/// there is no attribute X, an empty string is returned.
|
||||
/// </summary>
|
||||
private sealed class AttributeContentMode : ContentMode
|
||||
private sealed class AttributeContentMode(String attribute) : ContentMode
|
||||
{
|
||||
private readonly String _attribute;
|
||||
|
||||
public AttributeContentMode(String attribute)
|
||||
{
|
||||
_attribute = attribute;
|
||||
}
|
||||
private readonly String _attribute = attribute;
|
||||
|
||||
public override String GetCssText() => FunctionNames.Attr.CssFunction(_attribute);
|
||||
|
||||
|
@ -306,14 +286,9 @@ namespace AngleSharp.Css.Declarations
|
|||
/// image). If the resource or image can't be displayed, it is either
|
||||
/// ignored or some placeholder shows up.
|
||||
/// </summary>
|
||||
private sealed class UrlContentMode : ContentMode
|
||||
private sealed class UrlContentMode(CssUrlValue url) : ContentMode
|
||||
{
|
||||
private readonly CssUrlValue _url;
|
||||
|
||||
public UrlContentMode(CssUrlValue url)
|
||||
{
|
||||
_url = url;
|
||||
}
|
||||
private readonly CssUrlValue _url = url;
|
||||
|
||||
public override String GetCssText() => _url.CssText;
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
if (cursor != null)
|
||||
{
|
||||
return new CssCursorValue(definitions.ToArray(), cursor);
|
||||
return new CssCursorValue([.. definitions], cursor);
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FlexBasis;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Flex,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = Or(Content, AutoLengthOrPercentConverter);
|
||||
|
||||
|
|
|
@ -10,12 +10,12 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.Flex;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.FlexGrow,
|
||||
PropertyNames.FlexShrink,
|
||||
PropertyNames.FlexBasis,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = new FlexAggregator();
|
||||
|
||||
|
@ -55,12 +55,12 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
if (options != null)
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
return
|
||||
[
|
||||
options.Items[0],
|
||||
options.Items[1],
|
||||
options.Items[2],
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FlexDirection;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.FlexFlow,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = FlexDirectionConverter;
|
||||
|
||||
|
|
|
@ -10,11 +10,11 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FlexFlow;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.FlexDirection,
|
||||
PropertyNames.FlexWrap,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = new FlexFlowAggregator();
|
||||
|
||||
|
@ -52,11 +52,11 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
if (options != null)
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
return
|
||||
[
|
||||
options.Items[0],
|
||||
options.Items[1],
|
||||
};
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FlexGrow;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Flex,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = NumberConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FlexShrink;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Flex,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = NumberConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FlexWrap;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.FlexFlow,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = FlexWrapConverter;
|
||||
|
||||
|
|
|
@ -17,8 +17,8 @@ namespace AngleSharp.Css.Declarations
|
|||
|
||||
public static PropertyFlags Flags = PropertyFlags.Inherited | PropertyFlags.Animatable | PropertyFlags.Shorthand;
|
||||
|
||||
public static String[] Longhands = new[]
|
||||
{
|
||||
public static String[] Longhands =
|
||||
[
|
||||
PropertyNames.FontFamily,
|
||||
PropertyNames.FontSize,
|
||||
PropertyNames.FontVariant,
|
||||
|
@ -26,7 +26,7 @@ namespace AngleSharp.Css.Declarations
|
|||
PropertyNames.FontStretch,
|
||||
PropertyNames.FontStyle,
|
||||
PropertyNames.LineHeight,
|
||||
};
|
||||
];
|
||||
|
||||
sealed class FontValueConverter : IValueConverter
|
||||
{
|
||||
|
@ -139,10 +139,10 @@ namespace AngleSharp.Css.Declarations
|
|||
return null;
|
||||
}
|
||||
|
||||
return new ICssValue[] { systemFont, null, null, null, null, null, null };
|
||||
return [systemFont, null, null, null, null, null, null];
|
||||
}
|
||||
|
||||
return new ICssValue[] { font.FontFamilies, font.Size, font.Variant, font.Weight, font.Stretch, font.Style, font.LineHeight };
|
||||
return [font.FontFamilies, font.Size, font.Variant, font.Weight, font.Stretch, font.Style, font.LineHeight];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FontFamily;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Font,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = FontFamiliesConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FontSize;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Font,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = FontSizeConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FontStyle;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Font,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = FontStyleConverter;
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@ namespace AngleSharp.Css.Declarations
|
|||
{
|
||||
public static String Name = PropertyNames.FontVariant;
|
||||
|
||||
public static String[] Shorthands = new[]
|
||||
{
|
||||
public static String[] Shorthands =
|
||||
[
|
||||
PropertyNames.Font,
|
||||
};
|
||||
];
|
||||
|
||||
public static IValueConverter Converter = FontVariantConverter;
|
||||
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче