@VisibleForTesting static int extractIndexArgument(String indexPseudoClassArgument, String pseudoClassName) { if (indexPseudoClassArgument == null) { throw new AstCssFunctionalPseudoClassHasNoArgumentsException(); } Matcher m = INDEX_REGEX.matcher(indexPseudoClassArgument); boolean isArgumentAnInteger = m.find(); if (!isArgumentAnInteger) { String reason = String.format("The :%s() pseudo-class requires an integer as argument but got: \"%s\".", pseudoClassName, indexPseudoClassArgument); throw new InvalidPseudoClassSelectorException(reason); } String integerIndex = m.group(1); if (integerIndex.startsWith("+")) { integerIndex = integerIndex.substring(1); } return Integer.valueOf(integerIndex); }
private void assertIndexArgumentIsNotValid(String indexString) { try { CssPseudoClassConditionTranslator.extractIndexArgument(indexString, "my-pseudo"); fail("Should consider index argument `"+indexString+"` to be invalid."); } catch (InvalidPseudoClassSelectorException e) { assertThat(e.getMessage(), containsString(":my-pseudo()")); assertThat(e.getMessage(), containsString(indexString)); } }
@VisibleForTesting static int extractIndexArgument(String indexPseudoClassArgument, String pseudoClassName) { if (indexPseudoClassArgument == null) { throw new AstCssFunctionalPseudoClassHasNoArgumentsException(); } Matcher m = INDEX_REGEX.matcher(indexPseudoClassArgument); boolean isArgumentAnInteger = m.find(); if (!isArgumentAnInteger) { String reason = String.format("The :%s() pseudo-class requires an integer as argument but got: \"%s\".", pseudoClassName, indexPseudoClassArgument); throw new InvalidPseudoClassSelectorException(reason); } String integerIndex = m.group(1); if (integerIndex.startsWith("+")) { integerIndex = integerIndex.substring(1); } return Integer.valueOf(integerIndex); }