Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added "separators" customization, NULL pre-checks, and Javadoc comment blocks to all constructors #63

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 38 additions & 1 deletion src/main/java/org/hashids/Hashids.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*
* @author <a href="mailto:[email protected]">fanweixiao</a>
* @author <a href="mailto:[email protected]">Tercio Gaudencio Filho</a>
* @author <a href="mailto:[email protected]">Randolf Richardson</a>
* @since 0.3.3
*/
public class Hashids {
Expand All @@ -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);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

alphabet isn't used here.

}

/**
* 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;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should follow the pattern above that was used for salt i.e.

this.alphabet = alphabet != null ? alphabet : DEFAULT_ALPHABET;


final StringBuilder uniqueAlphabet = new StringBuilder();
for (int i = 0; i < alphabet.length(); i++) {
Expand All @@ -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) {
Expand Down