public static int indexOfNonWhitespace(String string, int startindex, int endindex) { for (int i = startindex; i < endindex; i++) { if (!CharUtil.isWhitespace(string.charAt(i))) { return i; } } return -1; }
/** * Finds index of the first character in given array the matches any from the * given set of characters. * * @return index of matched character or -1 */ public static int findFirstEqual(char[] source, int index, char[] match) { for (int i = index; i < source.length; i++) { if (equalsOne(source[i], match)) { return i; } } return -1; }
/** * Indicates whether the given character is in the <i>reserved</i> set. * * @see <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986, appendix A</a> */ protected static boolean isReserved(char c) { return isGenericDelimiter(c) || isSubDelimiter(c); }
@Override public boolean isValid(char c) { return isUnreserved(c) || isSubDelimiter(c) || c == ':'; } },
@Override public boolean isValid(char c) { return isDigit(c); } },
@Override public void parse() { while (true) { ndx++; if (isEOF()) { state = SCRIPT_DATA_ESCAPED; return; } char c = input[ndx]; if (equalsOne(c, TAG_WHITESPACES_OR_END)) { if (isAppropriateTagName(T_SCRIPT, doubleEscapedNdx, ndx)) { state = SCRIPT_DATA_DOUBLE_ESCAPED; } else { state = SCRIPT_DATA_ESCAPED; } return; } if (isAlpha(c)) { continue; } state = SCRIPT_DATA_ESCAPED; return; } } };
if (CharUtil.equalsOne(srcc[0], delimiters)) { // string starts with delimiter end[0] = 0; count++; s = CharUtil.findFirstDiff(srcc, 1, delimiters); if (s == -1) { // nothing after delimiters return new String[] {EMPTY, EMPTY}; e = CharUtil.findFirstEqual(srcc, s, delimiters); if (e == -1) { end[count] = srcc.length; s = CharUtil.findFirstDiff(srcc, e, delimiters); if (s == -1) { start[count] = end[count] = srcc.length;
ndx2 = ndx; while ((ndx2 < len) && CharUtil.isPropertyNameChar(template.charAt(ndx2))) { ndx2++; while ((ndx2 > ndx) && !CharUtil.isAlphaOrDigit(template.charAt(ndx2))) { ndx2--;
@Override public void parse() { ndx++; if (isEOF()) { state = RAWTEXT; return; } char c = input[ndx]; if (isAlpha(c)) { state = RAWTEXT_END_TAG_NAME; return; } state = RAWTEXT; } };
/** * Lowers uppercase ASCII char. */ public static char toLowerAscii(char c) { if (isUppercaseAlpha(c)) { c += (char) 0x20; } return c; }
/** * Uppers lowercase ASCII char. */ public static char toUpperAscii(char c) { if (isLowercaseAlpha(c)) { c -= (char) 0x20; } return c; }
ptr.c = input[ndx]; if (!CharUtil.isAlphaOrDigit(ptr.c)) { return lastName != null ? new String(lastName) : null;
/** * Returns environment friendly name. */ public static String environmentName(String name) { char[] chars = name.toCharArray(); for (int i = 0; i < chars.length; i++) { char c = chars[i]; if (CharUtil.isAlphaOrDigit(c)) { chars[i] = CharUtil.toUpperAscii(c); } else { chars[i] = '_'; } } return new String(chars); }
@Test void testIsSubDelimiter_specialCase() { // special case as I dont know how to add singletquote to the parameterized CsvSource assertTrue(CharUtil.isSubDelimiter('\'')); }
@ParameterizedTest (name = "{index} : CharUtil.isGenericDelimiter({1}) == {0}") @CsvSource({ // only generic delimiters "true, :", "true, /", "true, ?", "true, #", "true, [", "true, ]", "true, @", // few non generic delimters "false, ','", "false, !", "false, +" }) void testIsGenericDelimiter(final boolean expected, final char input) { assertEquals(expected, CharUtil.isGenericDelimiter(input)); }
@Override public boolean isValid(char c) { return isUnreserved(c) || isSubDelimiter(c); } },
@Override public boolean isValid(final char c) { return isDigit(c); } },
@Override public void parse() { doubleEscapedEndTag = ndx + 1; while (true) { ndx++; if (isEOF()) { state = SCRIPT_DATA_DOUBLE_ESCAPED; return; } char c = input[ndx]; if (equalsOne(c, TAG_WHITESPACES_OR_END)) { if (isAppropriateTagName(T_SCRIPT, doubleEscapedEndTag, ndx)) { state = SCRIPT_DATA_ESCAPED; } else { state = SCRIPT_DATA_DOUBLE_ESCAPED; } return; } if (isAlpha(c)) { continue; } state = SCRIPT_DATA_DOUBLE_ESCAPED; return; } } };