CssRangeToken
Represents the CSS range token.
using AngleSharp.Extensions;
using System.Collections.Generic;
using System.Globalization;
namespace AngleSharp.Parser.Css
{
internal sealed class CssRangeToken : CssToken
{
private readonly string[] _range;
public bool IsEmpty {
get {
if (_range != null)
return _range.Length == 0;
return true;
}
}
public string[] SelectedRange => _range;
public CssRangeToken(string start, string end)
: base(CssTokenType.Range, string.Empty)
{
int i = int.Parse(start, NumberStyles.HexNumber);
if (i <= 1114111) {
if (end != null) {
List<string> list = new List<string>();
int num = int.Parse(end, NumberStyles.HexNumber);
if (num > 1114111)
num = 1114111;
for (; i <= num; i++) {
list.Add(i.ConvertFromUtf32());
}
_range = list.ToArray();
} else
_range = new string[1] {
i.ConvertFromUtf32()
};
}
}
public override string ToValue()
{
if (IsEmpty)
return string.Empty;
int num;
if (_range.Length == 1) {
num = _range[0].ConvertToUtf32(0);
return "#" + num.ToString("x");
}
num = _range[0].ConvertToUtf32(0);
string str = num.ToString("x");
num = _range[_range.Length - 1].ConvertToUtf32(0);
return "#" + str + "-#" + num.ToString("x");
}
}
}