From 8e5953adf334c9eb4d288b40e5f46a7e710131b2 Mon Sep 17 00:00:00 2001 From: Rocky Madden Date: Sat, 20 Oct 2012 15:54:58 -0600 Subject: Created AsciiLetterOnlyStringCleaner and spec. --- .../AsciiLetterOnlyStringCleaner.scala | 14 ++++++++++++ .../AsciiLetterOnlyStringCleanerSpec.scala | 26 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100755 core/source/core/scala/org/hashtree/stringmetric/AsciiLetterOnlyStringCleaner.scala create mode 100755 core/source/test/scala/org/hashtree/stringmetric/AsciiLetterOnlyStringCleanerSpec.scala (limited to 'core') diff --git a/core/source/core/scala/org/hashtree/stringmetric/AsciiLetterOnlyStringCleaner.scala b/core/source/core/scala/org/hashtree/stringmetric/AsciiLetterOnlyStringCleaner.scala new file mode 100755 index 0000000..5a93b30 --- /dev/null +++ b/core/source/core/scala/org/hashtree/stringmetric/AsciiLetterOnlyStringCleaner.scala @@ -0,0 +1,14 @@ +package org.hashtree.stringmetric + +/** A decorator [[org.hashtree.stringmetric.StringCleaner]]. Ensures only ASCII letters matter. */ +trait AsciiLetterOnlyStringCleaner extends StringCleaner { + abstract override def clean(charArray: Array[Char]): Array[Char] = { + super.clean( + charArray.filter { c => + (c >= 65 && c <= 90 ) || (c >= 97 && c <= 122) + } + ) + } + + abstract override def clean(string: String): String = clean(string.toCharArray).mkString +} \ No newline at end of file diff --git a/core/source/test/scala/org/hashtree/stringmetric/AsciiLetterOnlyStringCleanerSpec.scala b/core/source/test/scala/org/hashtree/stringmetric/AsciiLetterOnlyStringCleanerSpec.scala new file mode 100755 index 0000000..99ed40d --- /dev/null +++ b/core/source/test/scala/org/hashtree/stringmetric/AsciiLetterOnlyStringCleanerSpec.scala @@ -0,0 +1,26 @@ +package org.hashtree.stringmetric + +import org.junit.runner.RunWith +import org.scalatest.junit.JUnitRunner + +@RunWith(classOf[JUnitRunner]) +final class AsciiLetterOnlyStringCleanerSpec extends ScalaTest { + private final val Cleaner = new StringCleanerDelegate with AsciiLetterOnlyStringCleaner + + "AsciiLetterOnlyStringCleaner" should provide { + "overloaded clean method" when passed { + "String with mixed characters" should returns { + "String with non-letters removed" in { + Cleaner.clean("!@#$%^&*()abc") should equal ("abc") + Cleaner.clean("!@#$%^&*()abc123") should equal ("abc") + } + } + "character array with mixed characters" should returns { + "character array with non-letters removed" in { + Cleaner.clean("!@#$%^&*()abc".toCharArray) should equal ("abc".toCharArray) + Cleaner.clean("!@#$%^&*()abc123".toCharArray) should equal ("abc".toCharArray) + } + } + } + } +} \ No newline at end of file -- cgit v1.2.3