CssNumberToken
Represents a CSS number token.
using AngleSharp.Css.Values;
using System.Globalization;
namespace AngleSharp.Parser.Css
{
internal sealed class CssNumberToken : CssToken
{
private static readonly char[] floatIndicators = new char[3] {
'.',
'e',
'E'
};
public bool IsInteger => base.Data.IndexOfAny(floatIndicators) == -1;
public int IntegerValue => int.Parse(base.Data, CultureInfo.InvariantCulture);
public float Value => float.Parse(base.Data, CultureInfo.InvariantCulture);
public CssNumberToken(string number, TextPosition position)
: base(CssTokenType.Number, number, position)
{
}
public Number ToNumber()
{
float value = Value;
if (value == 0)
return Number.Zero;
Number.Unit unit = (!IsInteger) ? Number.Unit.Float : Number.Unit.Integer;
return new Number(value, unit);
}
public override string ToValue()
{
if (base.Data[0] != '.')
return base.Data;
return "0" + base.Data;
}
}
}