@SuppressWarnings("WeakerAccess") public static String generateId(CharSequence headerText, String toDashChars, String nonDashChars, boolean noDupedDashes, boolean nonAsciiToLowercase) { int iMax = headerText.length(); StringBuilder baseRefId = new StringBuilder(iMax); if (toDashChars == null) toDashChars = HtmlRenderer.HEADER_ID_GENERATOR_TO_DASH_CHARS.getFrom(null); if (nonDashChars == null) nonDashChars = HtmlRenderer.HEADER_ID_GENERATOR_NON_DASH_CHARS.getFrom(null); for (int i = 0; i < iMax; i++) { char c = headerText.charAt(i); if (isAlphabetic(c)) { if (!nonAsciiToLowercase && !(c >= 'A' && c <= 'Z')) { baseRefId.append(c); } else { baseRefId.append(Character.toLowerCase(c)); } } else if (Character.isDigit(c)) baseRefId.append(c); else if (nonDashChars.indexOf(c) != -1) baseRefId.append(c); else if (toDashChars.indexOf(c) != -1 && (!noDupedDashes || ((c == '-' && baseRefId.length() == 0) || baseRefId.length() != 0 && baseRefId.charAt(baseRefId.length() - 1) != '-')) ) baseRefId.append('-'); } return baseRefId.toString(); }
@SuppressWarnings("WeakerAccess") public static String generateId(CharSequence headerText, String toDashChars, String nonDashChars, boolean noDupedDashes, boolean nonAsciiToLowercase) { int iMax = headerText.length(); StringBuilder baseRefId = new StringBuilder(iMax); if (toDashChars == null) toDashChars = HtmlRenderer.HEADER_ID_GENERATOR_TO_DASH_CHARS.getFrom(null); if (nonDashChars == null) nonDashChars = HtmlRenderer.HEADER_ID_GENERATOR_NON_DASH_CHARS.getFrom(null); for (int i = 0; i < iMax; i++) { char c = headerText.charAt(i); if (isAlphabetic(c)) { if (!nonAsciiToLowercase && !(c >= 'A' && c <= 'Z')) { baseRefId.append(c); } else { baseRefId.append(Character.toLowerCase(c)); } } else if (Character.isDigit(c)) baseRefId.append(c); else if (nonDashChars.indexOf(c) != -1) baseRefId.append(c); else if (toDashChars.indexOf(c) != -1 && (!noDupedDashes || ((c == '-' && baseRefId.length() == 0) || baseRefId.length() != 0 && baseRefId.charAt(baseRefId.length() - 1) != '-')) ) baseRefId.append('-'); } return baseRefId.toString(); }