if ("first".equals(indexS))
return 0;
else if ("last".equals(indexS))
return -1;
else if (indexS.startsWith("-"))
return Integer.parseInt(indexS);
Validate.isTrue(StringUtil.isNumeric(indexS), "Index must be numeric");
return Integer.parseInt(indexS);
}
@Override
public boolean matches(Element root, Element element) {
if(index < 0)
{
Element parent = element.parent();
if (parent == null)
return false;
List<Element> siblings = parent.children();
return siblings.size() + index >= 0 && element.equals(siblings.get(siblings.size() + index));
}
return element.elementSiblingIndex() == index;
}
@Override
public String toString() {
return String.format(":eq(%d)", index);
}
}