From 2f14b88e522024b556dc60605b7cf2c5c1828f35 Mon Sep 17 00:00:00 2001 From: ptuor Date: Wed, 14 Oct 2020 20:57:42 +0200 Subject: [PATCH 1/4] prepare unit tests --- clean-code-challanges/src/test/java/AcronymTest.java | 1 - clean-code-challanges/src/test/java/PigLatinTranslatorTest.java | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/clean-code-challanges/src/test/java/AcronymTest.java b/clean-code-challanges/src/test/java/AcronymTest.java index 4fec6c2..558f04b 100644 --- a/clean-code-challanges/src/test/java/AcronymTest.java +++ b/clean-code-challanges/src/test/java/AcronymTest.java @@ -3,7 +3,6 @@ import static org.junit.Assert.assertEquals; -@Ignore public class AcronymTest { @Test diff --git a/clean-code-challanges/src/test/java/PigLatinTranslatorTest.java b/clean-code-challanges/src/test/java/PigLatinTranslatorTest.java index c26cdcd..b295c9b 100644 --- a/clean-code-challanges/src/test/java/PigLatinTranslatorTest.java +++ b/clean-code-challanges/src/test/java/PigLatinTranslatorTest.java @@ -1,3 +1,4 @@ +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -8,6 +9,7 @@ import static org.junit.Assert.assertEquals; @RunWith(Parameterized.class) +@Ignore public class PigLatinTranslatorTest { private String englishPhrase; From 56e9894d6d71ee02bb51783c9189454bb1807e63 Mon Sep 17 00:00:00 2001 From: ptuor Date: Wed, 14 Oct 2020 22:25:35 +0200 Subject: [PATCH 2/4] generate acronyms --- clean-code-challanges/src/main/java/Acronym.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/clean-code-challanges/src/main/java/Acronym.java b/clean-code-challanges/src/main/java/Acronym.java index 5e00939..39a64b9 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -1,3 +1,6 @@ +import java.util.Arrays; +import java.util.stream.Collectors; + /** * Convert a phrase to its acronym. * @@ -6,13 +9,20 @@ * Help generate some jargon by writing a program that converts a long name like Portable Network Graphics to its acronym (PNG). */ class Acronym { + private final String phrase; Acronym(String phrase) { - + this.phrase = phrase.replaceAll("[^A-Za-z\\s]", ""); } String get() { - return null; + System.out.println(phrase); + return Arrays.stream(phrase.split("\\s")) + .filter(s -> !s.isEmpty()) + .map(s -> s.toUpperCase().charAt(0)) + .map(Object::toString) + .collect(Collectors.joining()); + } } From 69dfea319c2a21409f69f82b95d925629346d588 Mon Sep 17 00:00:00 2001 From: ptuor Date: Thu, 15 Oct 2020 07:25:12 +0200 Subject: [PATCH 3/4] handle punctuation without whitespaces --- clean-code-challanges/src/main/java/Acronym.java | 1 + 1 file changed, 1 insertion(+) diff --git a/clean-code-challanges/src/main/java/Acronym.java b/clean-code-challanges/src/main/java/Acronym.java index 39a64b9..0d25d28 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -12,6 +12,7 @@ class Acronym { private final String phrase; Acronym(String phrase) { + phrase = phrase.replaceAll("-", " "); this.phrase = phrase.replaceAll("[^A-Za-z\\s]", ""); } From 9471d10e44616349a49ac8ad4c142d8acca9c226 Mon Sep 17 00:00:00 2001 From: ptuor Date: Thu, 15 Oct 2020 09:40:20 +0200 Subject: [PATCH 4/4] refactoring and cleanup --- clean-code-challanges/src/main/java/Acronym.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/clean-code-challanges/src/main/java/Acronym.java b/clean-code-challanges/src/main/java/Acronym.java index 0d25d28..6add293 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -9,21 +9,19 @@ * Help generate some jargon by writing a program that converts a long name like Portable Network Graphics to its acronym (PNG). */ class Acronym { - private final String phrase; + private final String cleanedPhrase; + private final String whitespaces = "\\s"; Acronym(String phrase) { phrase = phrase.replaceAll("-", " "); - this.phrase = phrase.replaceAll("[^A-Za-z\\s]", ""); + this.cleanedPhrase = phrase.replaceAll("[^A-Za-z" + whitespaces + "]", ""); } String get() { - System.out.println(phrase); - return Arrays.stream(phrase.split("\\s")) + return Arrays.stream(cleanedPhrase.split(whitespaces)) .filter(s -> !s.isEmpty()) .map(s -> s.toUpperCase().charAt(0)) .map(Object::toString) .collect(Collectors.joining()); - } - }