Class IdGenerator
java.lang.Object
org.commonmark.ext.heading.anchor.IdGenerator
Generates strings to be used as identifiers.
Use builder()
to create an instance.
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic IdGenerator.Builder
builder()
private static Pattern
generateId
(String text) Generate an ID based on the provided text and previously generated IDs.private String
normalizeText
(String text) Assume we've been given a space separated text.
-
Field Details
-
allowedCharacters
-
identityMap
-
prefix
-
suffix
-
defaultIdentifier
-
-
Constructor Details
-
IdGenerator
-
-
Method Details
-
builder
- Returns:
- a new builder with default arguments
-
generateId
Generate an ID based on the provided text and previously generated IDs.
This method is not thread safe, concurrent calls can end up with non-unique identifiers.
Note that collision can occur in the case that
- Method called with 'X'
- Method called with 'X' again
- Method called with 'X-1'
In that case, the three generated IDs will be:
- X
- X-1
- X-1
Therefore if collisions are unacceptable you should ensure that numbers are stripped from end of
text
.- Parameters:
text
- Text that the identifier should be based on. Will be normalised, then used to generate the identifier.- Returns:
text
if this is the first instance that thetext
has been passed to the method. Otherwise,text + "-" + X
will be returned, where X is the number of times thattext
has previously been passed in. Iftext
is empty, the default identifier given in the constructor will be used.
-
compileAllowedCharactersPattern
-
normalizeText
Assume we've been given a space separated text.- Parameters:
text
- Text to normalize to an ID
-