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, TextPosition position)
: base(CssTokenType.Range, string.Empty, position)
{
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;
if (_range.Length == 1)
return "#" + _range[0].ConvertToUtf32(0).ToString("x");
return "#" + _range[0].ConvertToUtf32(0).ToString("x") + "-#" + _range[_range.Length - 1].ConvertToUtf32(0).ToString("x");
}
}
}