From f6811a9905f0978859c2e310d43c02517519f21f Mon Sep 17 00:00:00 2001 From: Shekhar Gulati Date: Sun, 22 May 2016 19:05:56 +0530 Subject: [PATCH] Fixed #38. Added support for `toKebabCase` function --- src/main/java/strman/Strman.java | 10 +++++++++ src/test/java/strman/StrmanTest.java | 32 +++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/main/java/strman/Strman.java b/src/main/java/strman/Strman.java index 9bf7fec..8e358b2 100644 --- a/src/main/java/strman/Strman.java +++ b/src/main/java/strman/Strman.java @@ -1023,6 +1023,16 @@ public abstract class Strman { return Arrays.stream(words).map(w -> w.toLowerCase()).collect(joining(Optional.ofNullable(chr).orElse(" "))); } + /** + * Transform to kebab-case. + * + * @param value The input String + * @return String in kebab-case. + */ + public static String toKebabCase(final String value) { + return toDecamelize(value, "-"); + } + public static String decode(final String value, final int digits, final int radix) { validate(value, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER); return Arrays diff --git a/src/test/java/strman/StrmanTest.java b/src/test/java/strman/StrmanTest.java index f5e0d0d..d116e13 100644 --- a/src/test/java/strman/StrmanTest.java +++ b/src/test/java/strman/StrmanTest.java @@ -743,7 +743,37 @@ public class StrmanTest { @Test public void toDeCamelCase_shouldDeCamelCaseAString() throws Exception { - assertThat(toDecamelize("camelCase", null), equalTo("camel case")); + String[] fixture = { + "deCamelize", + "de-Camelize", + "de camelize", + "de camelize", + "de Camelize", + "de-camelize", + "-de--camelize", + "de_camelize", + " de_camelize" + }; + + Arrays.stream(fixture).forEach(el -> assertThat(String.format("toDecamelize(%s) should be de-camelize", el), toDecamelize(el, null), equalTo("de camelize"))); + assertThat(toDecamelize("camelCase", "_"), equalTo("camel_case")); } + + @Test + public void toKebabCase_shouldKebabCaseAString() throws Exception { + String[] fixture = { + "deCamelize", + "de-Camelize", + "de camelize", + "de camelize", + "de Camelize", + "de-camelize", + "-de--camelize", + "de_camelize", + " de_camelize" + }; + + Arrays.stream(fixture).forEach(el -> assertThat(String.format("toKebabCase(%s) should be de-camelize", el), toKebabCase(el), equalTo("de-camelize"))); + } } \ No newline at end of file