@Override public String generateKeyFrom(String source) { return slugify(source); } }
public static String slugify(String s) { Slug slug = new Slug(s); return slug .normalize() .removeNonAsciiChars() .dashifyNonWordChars() .dashifyWhitespaceChars() .collapseDashes() .removeHeadingDash() .removeTrailingDash() .toLowerCase(); }
private Slug dashifyNonWordChars() { this.in = dashify(NON_WORD_CHARS, in); return this; }
private Slug removeNonAsciiChars() { this.in = removeAll(NON_ASCII_CHARS, in); return this; }
private Slug removeNonAsciiChars() { this.in = removeAll(NON_ASCII_CHARS, in); return this; }
public static String slugify(String s) { Slug slug = new Slug(s); return slug .normalize() .removeNonAsciiChars() .dashifyNonWordChars() .dashifyWhitespaceChars() .collapseDashes() .removeHeadingDash() .removeTrailingDash() .toLowerCase(); }
private static String nameToType(String name) { String slugified = slugify(name); return slugified.substring(0, Math.min(slugified.length(), LINK_TYPE_MAX_LENGTH)); }
private Slug dashifyWhitespaceChars() { this.in = dashify(WHITESPACES_CHARS, in); return this; }
@Override public String checkKey(String keyCandidate) { requireNonNull(keyCandidate, "key can't be null"); checkArgument(keyCandidate.length() >= KEY_MIN_LENGTH, "Key must not be empty"); checkArgument(keyCandidate.length() <= KEY_MAX_LENGTH, "Key '%s' must be at most %s chars long", keyCandidate, KEY_MAX_LENGTH); checkArgument(slugify(keyCandidate).equals(keyCandidate), "Key '%s' contains at least one invalid char", keyCandidate); return keyCandidate; }
private Slug collapseDashes() { this.in = dashify(DASHES_IN_ROWS, in); return this; }
@Test public void slugify() { assertThat(Slug.slugify("foo")).isEqualTo("foo"); assertThat(Slug.slugify(" FOO ")).isEqualTo("foo"); assertThat(Slug.slugify("he's here")).isEqualTo("he-s-here"); assertThat(Slug.slugify("foo-bar")).isEqualTo("foo-bar"); assertThat(Slug.slugify("foo_bar")).isEqualTo("foo_bar"); assertThat(Slug.slugify("accents éà")).isEqualTo("accents-ea"); assertThat(Slug.slugify("<foo>")).isEqualTo("foo"); assertThat(Slug.slugify("<\"foo:\">")).isEqualTo("foo"); } }
private Slug collapseDashes() { this.in = dashify(DASHES_IN_ROWS, in); return this; }
@Override public String generateKeyFrom(String source) { return slugify(source.substring(0, min(source.length(), KEY_MAX_LENGTH))); } }
private Slug dashifyWhitespaceChars() { this.in = dashify(WHITESPACES_CHARS, in); return this; }
private static String nameToType(String name) { String slugified = slugify(name); return slugified.substring(0, Math.min(slugified.length(), LINK_TYPE_MAX_LENGTH)); }
private Slug dashifyNonWordChars() { this.in = dashify(NON_WORD_CHARS, in); return this; }
@Override public String checkKey(String keyCandidate) { requireNonNull(keyCandidate, "key can't be null"); checkArgument(keyCandidate.length() >= KEY_MIN_LENGTH, "Key must not be empty"); checkArgument(keyCandidate.length() <= KEY_MAX_LENGTH, "Key '%s' must be at most %s chars long", keyCandidate, KEY_MAX_LENGTH); checkArgument(slugify(keyCandidate).equals(keyCandidate), "Key '%s' contains at least one invalid char", keyCandidate); return keyCandidate; }