@Override public HtmlIdGenerator create() { return new HeaderIdGenerator(); } }
@SuppressWarnings("WeakerAccess") public static String generateId(CharSequence headerText, String toDashChars, boolean noDupedDashes, final boolean nonAsciiToLowercase) { return generateId(headerText, toDashChars, null, noDupedDashes, nonAsciiToLowercase); }
@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(); }
@Override public String getId(final CharSequence text) { return generateId(text.toString()); }
@Override public HtmlIdGenerator create(LinkResolverContext context) { return new HeaderIdGenerator(); }
/** * @param headerText * @param toDashChars * @param noDupedDashes * @return header id * @deprecated use {@link #generateId(CharSequence, String, String, boolean, boolean)} */ @Deprecated public static String generateId(CharSequence headerText, String toDashChars, boolean noDupedDashes) { return generateId(headerText, toDashChars, null, noDupedDashes, true); }
@Override public HtmlIdGenerator create() { return new HeaderIdGenerator(); } }
String generateId(final String text) { if (!text.isEmpty()) { String baseRefId = generateId(text, toDashChars, nonDashChars, noDupedDashes, nonAsciiToLowercase); if (resolveDupes) { if (headerBaseIds.containsKey(baseRefId)) { int index = headerBaseIds.get(baseRefId); index++; headerBaseIds.put(baseRefId, index); baseRefId += "-" + index; } else { headerBaseIds.put(baseRefId, 0); } } return baseRefId; } return null; }
@Override public HtmlIdGenerator create(LinkResolverContext context) { return new HeaderIdGenerator(); }
@Override protected void visit(AnchorRefTarget node) { if (node.getAnchorRefId().isEmpty()) { String text = node.getAnchorRefText(); String refId = null; refId = generateId(text); if (refId != null) { node.setAnchorRefId(refId); } } } }.visit(document);
@SuppressWarnings("WeakerAccess") public static String generateId(CharSequence headerText, String toDashChars, boolean noDupedDashes, final boolean nonAsciiToLowercase) { return generateId(headerText, toDashChars, null, noDupedDashes, nonAsciiToLowercase); }
@Override public String getId(final CharSequence text) { return generateId(text.toString()); }
/** * @param headerText * @param toDashChars * @param noDupedDashes * @return header id * @deprecated use {@link #generateId(CharSequence, String, String, boolean, boolean)} */ @Deprecated public static String generateId(CharSequence headerText, String toDashChars, boolean noDupedDashes) { return generateId(headerText, toDashChars, null, noDupedDashes, true); }
String generateId(final String text) { if (!text.isEmpty()) { String baseRefId = generateId(text, toDashChars, nonDashChars, noDupedDashes, nonAsciiToLowercase); if (resolveDupes) { if (headerBaseIds.containsKey(baseRefId)) { int index = headerBaseIds.get(baseRefId); index++; headerBaseIds.put(baseRefId, index); baseRefId += "-" + index; } else { headerBaseIds.put(baseRefId, 0); } } return baseRefId; } return null; }
@Override protected void visit(AnchorRefTarget node) { if (node.getAnchorRefId().isEmpty()) { String text = node.getAnchorRefText(); String refId = null; refId = generateId(text); if (refId != null) { node.setAnchorRefId(refId); } } } }.visit(document);