diff --git a/src/main/java/org/hashids/Hashids.java b/src/main/java/org/hashids/Hashids.java index 6d688ea..49c30b4 100644 --- a/src/main/java/org/hashids/Hashids.java +++ b/src/main/java/org/hashids/Hashids.java @@ -15,6 +15,7 @@ * * @author fanweixiao * @author Tercio Gaudencio Filho + * @author Randolf Richardson * @since 0.3.3 */ public class Hashids { @@ -38,21 +39,58 @@ public class Hashids { private final String seps; private final String guards; + /** + * Instantiate Hashids + */ public Hashids() { this(DEFAULT_SALT); } + /** + * Instantiate Hashids + * + * @param salt (NULL defaults to "") + */ public Hashids(String salt) { this(salt, 0); } + /** + * Instantiate Hashids + * + * @param salt (NULL defaults to "") + * @param minHashLength (0 is the default) + */ public Hashids(String salt, int minHashLength) { this(salt, minHashLength, DEFAULT_ALPHABET); } + /** + * Instantiate Hashids + * + * @param salt (NULL defaults to "") + * @param minHashLength (0 is the default) + * @param alphabet (NULL defaults to "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890") + */ public Hashids(String salt, int minHashLength, String alphabet) { + this(salt, minHashLength, DEFAULT_ALPHABET, DEFAULT_SEPS); + } + + /** + * Instantiate Hashids + * + * Note: Specifiying separators (or none) that differ from the default will yield a different set of Hashids because separators-based character avoidance effects which characters can be used in encoding/decoding + * + * @param salt (NULL defaults to "") + * @param minHashLength (0 is the default) + * @param alphabet (NULL defaults to "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890") + * @param seps (NULL defaults to "cfhistuCFHISTU"; use "" to specify none) + */ + public Hashids(String salt, int minHashLength, String alphabet, String seps) { this.salt = salt != null ? salt : DEFAULT_SALT; this.minHashLength = minHashLength > 0 ? minHashLength : DEFAULT_MIN_HASH_LENGTH; + if (alphabet == null) alphabet = DEFAULT_ALPHABET; + if (seps == null) seps = DEFAULT_SEPS; final StringBuilder uniqueAlphabet = new StringBuilder(); for (int i = 0; i < alphabet.length(); i++) { @@ -74,7 +112,6 @@ public Hashids(String salt, int minHashLength, String alphabet) { // seps should contain only characters present in alphabet; // alphabet should not contains seps - String seps = DEFAULT_SEPS; for (int i = 0; i < seps.length(); i++) { final int j = alphabet.indexOf(seps.charAt(i)); if (j == -1) {