@Override public String generateKeyFrom(String source) { return slugify(source); } }
private static String nameToType(String name) { String slugified = slugify(name); return slugified.substring(0, Math.min(slugified.length(), LINK_TYPE_MAX_LENGTH)); }
@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; }
@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"); } }
@Override public String generateKeyFrom(String source) { return slugify(source.substring(0, min(source.length(), KEY_MAX_LENGTH))); } }
private static String nameToType(String name) { String slugified = slugify(name); return slugified.substring(0, Math.min(slugified.length(), LINK_TYPE_MAX_LENGTH)); }
@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; }