Change "lt", "gt" & "eq"-selectors to accept an unsigned integer index
This commit is contained in:
@@ -346,9 +346,9 @@
|
||||
|
||||
NSDecimalNumber *number = [[NSDecimalNumber alloc] initWithDecimal:decimal];
|
||||
if ([pseudoClass isEqualToString:@"lt"]) {
|
||||
return ltSelector(number.unsignedIntegerValue);
|
||||
return ltSelector(number.integerValue);
|
||||
} else if ([pseudoClass isEqualToString:@"gt"]) {
|
||||
return gtSelector(number.unsignedIntegerValue);
|
||||
return gtSelector(number.integerValue);
|
||||
} else if ([pseudoClass isEqualToString:@"eq"]) {
|
||||
return eqSelector(number.integerValue);
|
||||
}
|
||||
|
||||
@@ -113,22 +113,23 @@ extern CSSSelector * requiredSelector();
|
||||
/**
|
||||
Less-than selector, e.g. 'lt(2)'
|
||||
|
||||
Selects all elements at an index less than the specified index.
|
||||
Selects all elements at an index less than the specified index. A negative index counts backwards from the last element.
|
||||
|
||||
@param index The zero-based index of the element to match.
|
||||
@returns A Less-Than selector.
|
||||
*/
|
||||
extern CSSSelector * ltSelector(NSUInteger index);
|
||||
extern CSSSelector * ltSelector(NSInteger index);
|
||||
|
||||
/**
|
||||
Greater-than selector, e.g. 'gt(2)'
|
||||
|
||||
Selects all elements at an index greater than the specified index.
|
||||
Selects all elements at an index greater than the specified index. A negative index counts backwards from the
|
||||
last element.
|
||||
|
||||
@param index The zero-based index of the element to match.
|
||||
@returns A Greater-Than selector.
|
||||
*/
|
||||
extern CSSSelector * gtSelector(NSUInteger index);
|
||||
extern CSSSelector * gtSelector(NSInteger index);
|
||||
|
||||
/**
|
||||
Equal selector, e.g. 'eq(3)'
|
||||
|
||||
@@ -270,19 +270,31 @@ CSSSelector * requiredSelector()
|
||||
|
||||
#pragma mark - Positional
|
||||
|
||||
CSSSelector * ltSelector(NSUInteger index)
|
||||
CSSSelector * ltSelector(NSInteger index)
|
||||
{
|
||||
NSString *name = [NSString stringWithFormat:@":lt(%lu)", (unsigned long)index];
|
||||
return namedBlockSelector(name, ^BOOL(HTMLElement * _Nonnull element) {
|
||||
return [element.parentElement indexOfChildNode:element] < index;
|
||||
NSUInteger elementIndex = [element.parentElement indexOfChildNode:element];
|
||||
|
||||
if (index > 0) {
|
||||
return elementIndex < index;
|
||||
} else {
|
||||
return elementIndex < element.parentElement.childNodesCount - index - 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
CSSSelector * gtSelector(NSUInteger index)
|
||||
CSSSelector * gtSelector(NSInteger index)
|
||||
{
|
||||
NSString *name = [NSString stringWithFormat:@":gt(%lu)", (unsigned long)index];
|
||||
return namedBlockSelector(name, ^BOOL(HTMLElement * _Nonnull element) {
|
||||
return [element.parentElement indexOfChildNode:element] > index;
|
||||
NSUInteger elementIndex = [element.parentElement indexOfChildNode:element];
|
||||
|
||||
if (index > 0) {
|
||||
return elementIndex > index;
|
||||
} else {
|
||||
return elementIndex > element.parentElement.childNodesCount - index - 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user