LastColumnSelector
The nth-last-column selector.
using AngleSharp.Css;
using AngleSharp.Dom.Html;
using System;
namespace AngleSharp.Dom.Css
{
internal sealed class LastColumnSelector : ChildSelector
{
public LastColumnSelector()
: base(PseudoClassNames.NthLastColumn)
{
}
public override bool Match(IElement element)
{
IElement parentElement = element.ParentElement;
if (parentElement != null) {
int num = Math.Sign(_step);
int num2 = 0;
for (int num3 = parentElement.ChildNodes.Length - 1; num3 >= 0; num3--) {
IHtmlTableCellElement htmlTableCellElement = parentElement.ChildNodes[num3] as IHtmlTableCellElement;
if (htmlTableCellElement != null) {
int columnSpan = htmlTableCellElement.ColumnSpan;
num2 += columnSpan;
if (htmlTableCellElement == element) {
int num4 = num2 - _offset;
int num5 = 0;
while (num5 < columnSpan) {
if (num4 == 0 || (Math.Sign(num4) == num && num4 % _step == 0))
return true;
num5++;
num4--;
}
return false;
}
}
}
}
return false;
}
}
}