From f81c7919bb3546a788d6fb2a072217660cdc0b9b Mon Sep 17 00:00:00 2001 From: Rocky Madden Date: Tue, 19 Mar 2013 09:59:53 -0600 Subject: Moved Alphabet into root package. --- .../com/rockymadden/stringmetric/Alphabet.scala | 55 ++++++++++++ .../stringmetric/phonetic/Alphabet.scala | 55 ------------ .../stringmetric/phonetic/MetaphoneAlgorithm.scala | 2 +- .../stringmetric/phonetic/MetaphoneMetric.scala | 2 +- .../stringmetric/phonetic/NysiisAlgorithm.scala | 2 +- .../stringmetric/phonetic/NysiisMetric.scala | 2 +- .../phonetic/RefinedNysiisAlgorithm.scala | 2 +- .../phonetic/RefinedNysiisMetric.scala | 2 +- .../phonetic/RefinedSoundexAlgorithm.scala | 2 +- .../phonetic/RefinedSoundexMetric.scala | 2 +- .../stringmetric/phonetic/SoundexAlgorithm.scala | 2 +- .../stringmetric/phonetic/SoundexMetric.scala | 2 +- .../rockymadden/stringmetric/AlphabetSpec.scala | 96 +++++++++++++++++++++ .../stringmetric/phonetic/AlphabetSpec.scala | 97 ---------------------- 14 files changed, 161 insertions(+), 162 deletions(-) create mode 100755 core/source/core/scala/com/rockymadden/stringmetric/Alphabet.scala delete mode 100755 core/source/core/scala/com/rockymadden/stringmetric/phonetic/Alphabet.scala create mode 100755 core/source/test/scala/com/rockymadden/stringmetric/AlphabetSpec.scala delete mode 100755 core/source/test/scala/com/rockymadden/stringmetric/phonetic/AlphabetSpec.scala (limited to 'core') diff --git a/core/source/core/scala/com/rockymadden/stringmetric/Alphabet.scala b/core/source/core/scala/com/rockymadden/stringmetric/Alphabet.scala new file mode 100755 index 0000000..d2ede81 --- /dev/null +++ b/core/source/core/scala/com/rockymadden/stringmetric/Alphabet.scala @@ -0,0 +1,55 @@ +package com.rockymadden.stringmetric + +import scala.collection.immutable.Set + +object Alphabet { + protected sealed abstract class AlphabetSet { + protected[Alphabet] val Chars: Set[Char] + + def isSuperset(char: Char): Boolean = Chars.contains(char) + + def isSuperset(charArray: Array[Char]): Boolean = + charArray.length > 0 && charArray.takeWhile(Chars.contains(_)).length == charArray.length + + def isSuperset(string: String): Boolean = isSuperset(string.toCharArray) + } + + case object LowercaseConsonant extends AlphabetSet { + override protected[Alphabet] final val Chars = + Set('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x' ,'z') + } + case object UppercaseConsonant extends AlphabetSet { + override protected[Alphabet] final val Chars = + Set('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X' ,'Z') + } + case object Consonant extends AlphabetSet { + override protected[Alphabet] final val Chars = LowercaseConsonant.Chars ++ UppercaseConsonant.Chars + } + case object LowercaseVowel extends AlphabetSet { + override protected[Alphabet] final val Chars = Set('a', 'e', 'i', 'o', 'u') + } + case object UppercaseVowel extends AlphabetSet { + override protected[Alphabet] final val Chars = Set('A', 'E', 'I', 'O', 'U') + } + case object Vowel extends AlphabetSet { + override protected[Alphabet] final val Chars = LowercaseVowel.Chars ++ UppercaseVowel.Chars + } + case object LowercaseY extends AlphabetSet { + override protected[Alphabet] final val Chars = Set('y') + } + case object UppercaseY extends AlphabetSet { + override protected[Alphabet] final val Chars = Set('Y') + } + case object Y extends AlphabetSet { + override protected[Alphabet] final val Chars = LowercaseY.Chars ++ UppercaseY.Chars + } + case object LowercaseAlpha extends AlphabetSet { + override protected[Alphabet] final val Chars = LowercaseConsonant.Chars ++ LowercaseVowel.Chars ++ LowercaseY.Chars + } + case object UppercaseAlpha extends AlphabetSet { + override protected[Alphabet] final val Chars = UppercaseConsonant.Chars ++ UppercaseVowel.Chars ++ UppercaseY.Chars + } + case object Alpha extends AlphabetSet { + override protected[Alphabet] final val Chars = LowercaseAlpha.Chars ++ UppercaseAlpha.Chars + } +} diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/Alphabet.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/Alphabet.scala deleted file mode 100755 index 7c52c7b..0000000 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/Alphabet.scala +++ /dev/null @@ -1,55 +0,0 @@ -package com.rockymadden.stringmetric.phonetic - -import scala.collection.immutable.Set - -object Alphabet { - protected sealed abstract class AlphabetSet { - protected[Alphabet] val Chars: Set[Char] - - def isSuperset(char: Char): Boolean = Chars.contains(char) - - def isSuperset(charArray: Array[Char]): Boolean = - charArray.length > 0 && charArray.takeWhile(Chars.contains(_)).length == charArray.length - - def isSuperset(string: String): Boolean = isSuperset(string.toCharArray) - } - - case object LowercaseConsonant extends AlphabetSet { - override protected[Alphabet] final val Chars = - Set('b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x' ,'z') - } - case object UppercaseConsonant extends AlphabetSet { - override protected[Alphabet] final val Chars = - Set('B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X' ,'Z') - } - case object Consonant extends AlphabetSet { - override protected[Alphabet] final val Chars = LowercaseConsonant.Chars ++ UppercaseConsonant.Chars - } - case object LowercaseVowel extends AlphabetSet { - override protected[Alphabet] final val Chars = Set('a', 'e', 'i', 'o', 'u') - } - case object UppercaseVowel extends AlphabetSet { - override protected[Alphabet] final val Chars = Set('A', 'E', 'I', 'O', 'U') - } - case object Vowel extends AlphabetSet { - override protected[Alphabet] final val Chars = LowercaseVowel.Chars ++ UppercaseVowel.Chars - } - case object LowercaseY extends AlphabetSet { - override protected[Alphabet] final val Chars = Set('y') - } - case object UppercaseY extends AlphabetSet { - override protected[Alphabet] final val Chars = Set('Y') - } - case object Y extends AlphabetSet { - override protected[Alphabet] final val Chars = LowercaseY.Chars ++ UppercaseY.Chars - } - case object LowercaseAlpha extends AlphabetSet { - override protected[Alphabet] final val Chars = LowercaseConsonant.Chars ++ LowercaseVowel.Chars ++ LowercaseY.Chars - } - case object UppercaseAlpha extends AlphabetSet { - override protected[Alphabet] final val Chars = UppercaseConsonant.Chars ++ UppercaseVowel.Chars ++ UppercaseY.Chars - } - case object Alpha extends AlphabetSet { - override protected[Alphabet] final val Chars = LowercaseAlpha.Chars ++ UppercaseAlpha.Chars - } -} diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala index 17e0931..e927852 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringAlgorithm, StringFilter } -import com.rockymadden.stringmetric.phonetic.Alphabet.{ Alpha, LowercaseVowel } +import com.rockymadden.stringmetric.Alphabet.{ Alpha, LowercaseVowel } import scala.annotation.{ switch, tailrec } /** An implementation of the Metaphone algorithm. */ diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala index 1793766..1677e20 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringFilter, StringMetric } -import com.rockymadden.stringmetric.phonetic.Alphabet.Alpha +import com.rockymadden.stringmetric.Alphabet.Alpha /** A implementation of the Metaphone metric. */ class MetaphoneMetric extends StringMetric[DummyImplicit, Boolean] { this: StringFilter => diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala index 261918f..b7a1216 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringAlgorithm, StringFilter } -import com.rockymadden.stringmetric.phonetic.Alphabet.{ Alpha, LowercaseVowel } +import com.rockymadden.stringmetric.Alphabet.{ Alpha, LowercaseVowel } import scala.annotation.{ switch, tailrec } /** An implementation of the NYSIIS algorithm. */ diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala index e83a0e6..ff3e251 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringFilter, StringMetric } -import com.rockymadden.stringmetric.phonetic.Alphabet.Alpha +import com.rockymadden.stringmetric.Alphabet.Alpha /** An implementation of the NYSIIS metric. */ class NysiisMetric extends StringMetric[DummyImplicit, Boolean] { this: StringFilter => diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala index ec9736b..c97336e 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringAlgorithm, StringFilter } -import com.rockymadden.stringmetric.phonetic.Alphabet.{ Alpha, LowercaseVowel } +import com.rockymadden.stringmetric.Alphabet.{ Alpha, LowercaseVowel } import scala.annotation.{ switch, tailrec } /** An implementation of the refined NYSIIS algorithm. */ diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala index 3298cc3..b554147 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringFilter, StringMetric } -import com.rockymadden.stringmetric.phonetic.Alphabet.Alpha +import com.rockymadden.stringmetric.Alphabet.Alpha /** An implementation of the refined NYSIIS metric. */ class RefinedNysiisMetric extends StringMetric[DummyImplicit, Boolean] { this: StringFilter => diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala index d6ce29b..5574954 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringAlgorithm, StringFilter } -import com.rockymadden.stringmetric.phonetic.Alphabet.Alpha +import com.rockymadden.stringmetric.Alphabet.Alpha import scala.annotation.{ switch, tailrec } /** An implementation of the refined Soundex algorithm. */ diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala index 7214de7..777cb3e 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringFilter, StringMetric } -import com.rockymadden.stringmetric.phonetic.Alphabet.Alpha +import com.rockymadden.stringmetric.Alphabet.Alpha /** An implementation of the refined Soundex metric. */ class RefinedSoundexMetric extends StringMetric[DummyImplicit, Boolean] { this: StringFilter => diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala index e616caa..dee45c2 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringAlgorithm, StringFilter } -import com.rockymadden.stringmetric.phonetic.Alphabet.Alpha +import com.rockymadden.stringmetric.Alphabet.Alpha import scala.annotation.{ switch, tailrec } /** An implementation of the Soundex algorithm. */ diff --git a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala index bccfbd9..512fa4d 100755 --- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala +++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala @@ -1,7 +1,7 @@ package com.rockymadden.stringmetric.phonetic import com.rockymadden.stringmetric.{ StringFilter, StringMetric } -import com.rockymadden.stringmetric.phonetic.Alphabet.Alpha +import com.rockymadden.stringmetric.Alphabet.Alpha /** An implementation of the Soundex metric. */ class SoundexMetric extends StringMetric[DummyImplicit, Boolean] { this: StringFilter => diff --git a/core/source/test/scala/com/rockymadden/stringmetric/AlphabetSpec.scala b/core/source/test/scala/com/rockymadden/stringmetric/AlphabetSpec.scala new file mode 100755 index 0000000..25b7283 --- /dev/null +++ b/core/source/test/scala/com/rockymadden/stringmetric/AlphabetSpec.scala @@ -0,0 +1,96 @@ +package com.rockymadden.stringmetric + +import com.rockymadden.stringmetric.Alphabet.{ Alpha, Vowel } +import org.junit.runner.RunWith +import org.scalatest.junit.JUnitRunner + +@RunWith(classOf[JUnitRunner]) +final class AlphabetSpec extends ScalaTest { + "Alphabet" should provide { + "an overloaded isSuperset method which accepts Char" when passed { + "non-alphabet argument" should returns { + "false" in { + Alpha isSuperset '0' should be (false) + } + } + "alphabet argument" should returns { + "true" in { + Alpha isSuperset 'a' should be (true) + Alpha isSuperset 'A' should be (true) + } + } + "non-vowel argument" should returns { + "false" in { + Vowel isSuperset 'y' should be (false) + } + } + "vowel argument" should returns { + "true" in { + Vowel isSuperset 'a' should be (true) + Vowel isSuperset 'A' should be (true) + } + } + } + "an overloaded isSuperset method which accepts Array[Char]" when passed { + "empty argument" should returns { + "false" in { + Alpha isSuperset Array.empty[Char] should be (false) + } + } + "non-alphabet argument" should returns { + "false" in { + Alpha isSuperset "hi!".toCharArray should be (false) + Alpha isSuperset "helloworld!".toCharArray should be (false) + } + } + "alphabet argument" should returns { + "true" in { + Alpha isSuperset "hi".toCharArray should be (true) + Alpha isSuperset "helloworld".toCharArray should be (true) + Alpha isSuperset "HI".toCharArray should be (true) + Alpha isSuperset "HELLOWORLD".toCharArray should be (true) + } + } + "non-vowel argument" should returns { + "false" in { + Vowel isSuperset "y".toCharArray should be (false) + } + } + "vowel argument" should returns { + "true" in { + Vowel isSuperset "a".toCharArray should be (true) + Vowel isSuperset "A".toCharArray should be (true) + } + } + } + "an overloaded isSuperset method which accepts String" when passed { + "empty argument" should returns { + "false" in { + Alpha isSuperset "" should be (false) + } + } + "non-alphabet argument" should returns { + "false" in { + Alpha isSuperset "helloworld!" should be (false) + } + } + "alphabet argument" should returns { + "true" in { + Alpha isSuperset "helloworld" should be (true) + Alpha isSuperset "HELLOWORLD" should be (true) + } + } + "non-vowel argument" should returns { + "false" in { + Vowel isSuperset "y" should be (false) + } + } + "vowel argument" should returns { + "true" in { + Vowel isSuperset "a" should be (true) + Vowel isSuperset "A" should be (true) + } + } + } + } +} diff --git a/core/source/test/scala/com/rockymadden/stringmetric/phonetic/AlphabetSpec.scala b/core/source/test/scala/com/rockymadden/stringmetric/phonetic/AlphabetSpec.scala deleted file mode 100755 index 3287d45..0000000 --- a/core/source/test/scala/com/rockymadden/stringmetric/phonetic/AlphabetSpec.scala +++ /dev/null @@ -1,97 +0,0 @@ -package com.rockymadden.stringmetric.phonetic - -import com.rockymadden.stringmetric.ScalaTest -import com.rockymadden.stringmetric.phonetic.Alphabet.{ Alpha, Vowel } -import org.junit.runner.RunWith -import org.scalatest.junit.JUnitRunner - -@RunWith(classOf[JUnitRunner]) -final class AlphabetSpec extends ScalaTest { - "Alphabet" should provide { - "an overloaded isSuperset method which accepts Char" when passed { - "non-alphabet argument" should returns { - "false" in { - Alpha isSuperset '0' should be (false) - } - } - "alphabet argument" should returns { - "true" in { - Alpha isSuperset 'a' should be (true) - Alpha isSuperset 'A' should be (true) - } - } - "non-vowel argument" should returns { - "false" in { - Vowel isSuperset 'y' should be (false) - } - } - "vowel argument" should returns { - "true" in { - Vowel isSuperset 'a' should be (true) - Vowel isSuperset 'A' should be (true) - } - } - } - "an overloaded isSuperset method which accepts Array[Char]" when passed { - "empty argument" should returns { - "false" in { - Alpha isSuperset Array.empty[Char] should be (false) - } - } - "non-alphabet argument" should returns { - "false" in { - Alpha isSuperset "hi!".toCharArray should be (false) - Alpha isSuperset "helloworld!".toCharArray should be (false) - } - } - "alphabet argument" should returns { - "true" in { - Alpha isSuperset "hi".toCharArray should be (true) - Alpha isSuperset "helloworld".toCharArray should be (true) - Alpha isSuperset "HI".toCharArray should be (true) - Alpha isSuperset "HELLOWORLD".toCharArray should be (true) - } - } - "non-vowel argument" should returns { - "false" in { - Vowel isSuperset "y".toCharArray should be (false) - } - } - "vowel argument" should returns { - "true" in { - Vowel isSuperset "a".toCharArray should be (true) - Vowel isSuperset "A".toCharArray should be (true) - } - } - } - "an overloaded isSuperset method which accepts String" when passed { - "empty argument" should returns { - "false" in { - Alpha isSuperset "" should be (false) - } - } - "non-alphabet argument" should returns { - "false" in { - Alpha isSuperset "helloworld!" should be (false) - } - } - "alphabet argument" should returns { - "true" in { - Alpha isSuperset "helloworld" should be (true) - Alpha isSuperset "HELLOWORLD" should be (true) - } - } - "non-vowel argument" should returns { - "false" in { - Vowel isSuperset "y" should be (false) - } - } - "vowel argument" should returns { - "true" in { - Vowel isSuperset "a" should be (true) - Vowel isSuperset "A" should be (true) - } - } - } - } -} -- cgit v1.2.3