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