summaryrefslogtreecommitdiff
path: root/core/source
diff options
context:
space:
mode:
authorRocky Madden <git@rockymadden.com>2013-02-11 14:35:34 -0700
committerRocky Madden <git@rockymadden.com>2013-02-11 14:35:34 -0700
commitd7c64cfa99a6ac3a7428c0840e61f4c7e496cba1 (patch)
tree8337b700ff24e8145594d55fb48c249c02df53bb /core/source
parentbe28fca736f2bc7623b6ab6773a90ae113a93caf (diff)
downloadstringmetric-d7c64cfa99a6ac3a7428c0840e61f4c7e496cba1.tar.gz
stringmetric-d7c64cfa99a6ac3a7428c0840e61f4c7e496cba1.tar.bz2
stringmetric-d7c64cfa99a6ac3a7428c0840e61f4c7e496cba1.zip
Trait and convenience object tweaks. Took notes from the scala library collection packages.
Diffstat (limited to 'core/source')
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/Algorithm.scala3
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/ConfigurableAlgorithm.scala3
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/ConfigurableMetric.scala3
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithm.scala20
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithmLike.scala6
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetric.scala41
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetricLike.scala6
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/Filter.scala3
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/Metric.scala3
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/StringAlgorithm.scala36
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/StringAlgorithmLike.scala43
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/StringFilter.scala35
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/StringFilterLike.scala30
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/StringMetric.scala73
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/StringMetricLike.scala100
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterCaseStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSpaceStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/filter/StringFilterDelegate.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/HammingMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/JaroMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithm.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/NGramMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/RatcliffObershelpMetric.scala4
-rwxr-xr-xcore/source/core/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetric.scala4
47 files changed, 288 insertions, 245 deletions
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/Algorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/Algorithm.scala
new file mode 100755
index 0000000..40d0d5a
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/Algorithm.scala
@@ -0,0 +1,3 @@
+package com.rockymadden.stringmetric
+
+trait Algorithm[T, R] extends AlgorithmLike[T, R]
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableAlgorithm.scala
new file mode 100755
index 0000000..34d5919
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableAlgorithm.scala
@@ -0,0 +1,3 @@
+package com.rockymadden.stringmetric
+
+trait ConfigurableAlgorithm[T, R, O] extends ConfigurableAlgorithmLike[T, R, O]
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableMetric.scala
new file mode 100755
index 0000000..035027e
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableMetric.scala
@@ -0,0 +1,3 @@
+package com.rockymadden.stringmetric
+
+trait ConfigurableMetric[T, R, O] extends ConfigurableMetricLike[T, R, O]
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithm.scala
new file mode 100755
index 0000000..20464a7
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithm.scala
@@ -0,0 +1,20 @@
+package com.rockymadden.stringmetric
+
+import com.rockymadden.stringmetric.similarity.NGramAlgorithm
+
+trait ConfigurableStringAlgorithm[R, O]
+ extends ConfigurableAlgorithm[String, R, O] with ConfigurableStringAlgorithmLike[R, O] with StringFilterLike {
+
+ override def filter(charArray: Array[Char]): Array[Char] = charArray
+
+ override def filter(string: String): String = string
+}
+
+object ConfigurableStringAlgorithm {
+ def computeWithNGram(charArray: Array[Char])(n: Int): Option[Array[Array[Char]]] =
+ NGramAlgorithm().compute(charArray)(n)
+
+ def computeWithNGram(string: String)(n: Int): Option[Array[String]] = NGramAlgorithm().compute(string)(n)
+
+ def nGram: NGramAlgorithm.type = NGramAlgorithm
+}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithmLike.scala b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithmLike.scala
index 8087b55..669cbd9 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithmLike.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringAlgorithmLike.scala
@@ -1,9 +1,5 @@
package com.rockymadden.stringmetric
-trait ConfigurableStringAlgorithmLike[R, O] extends ConfigurableAlgorithmLike[String, R, O] { this: StringFilterLike =>
+trait ConfigurableStringAlgorithmLike[R, O] extends ConfigurableAlgorithmLike[String, R, O] {
def compute(charArray: Array[Char])(implicit o: O): Option[Array[_]]
-
- override def filter(charArray: Array[Char]): Array[Char] = charArray
-
- override def filter(string: String): String = string
}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetric.scala
new file mode 100755
index 0000000..3ee31b7
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetric.scala
@@ -0,0 +1,41 @@
+package com.rockymadden.stringmetric
+
+import com.rockymadden.stringmetric.similarity.{ DiceSorensenMetric, NGramMetric, WeightedLevenshteinMetric }
+
+trait ConfigurableStringMetric[R, O]
+ extends ConfigurableMetric[String, R, O] with ConfigurableStringMetricLike[R, O] with StringFilterLike {
+
+ override def filter(charArray: Array[Char]): Array[Char] = charArray
+
+ override def filter(string: String): String = string
+}
+
+object ConfigurableStringMetric {
+ def compareWithDiceSorensen(charArray1: Array[Char], charArray2: Array[Char])(n: Int): Option[Double] =
+ DiceSorensenMetric().compare(charArray1, charArray2)(n)
+
+ def compareWithDiceSorensen(string1: String, string2: String)(n: Int): Option[Double] =
+ DiceSorensenMetric().compare(string1, string2)(n)
+
+ def compareWithNGram(charArray1: Array[Char], charArray2: Array[Char])(n: Int): Option[Double] =
+ NGramMetric().compare(charArray1, charArray2)(n)
+
+ def compareWithNGram(string1: String, string2: String)(n: Int): Option[Double] =
+ NGramMetric().compare(string1, string2)(n)
+
+ def compareWithWeightedLevenshtein(charArray1: Array[Char], charArray2: Array[Char])
+ (options: (BigDecimal, BigDecimal, BigDecimal)): Option[Double] =
+
+ WeightedLevenshteinMetric().compare(charArray1, charArray2)(options)
+
+ def compareWithWeightedLevenshtein(string1: String, string2: String)
+ (options: (BigDecimal, BigDecimal, BigDecimal)): Option[Double] =
+
+ WeightedLevenshteinMetric().compare(string1, string2)(options)
+
+ def diceSorensen: DiceSorensenMetric.type = DiceSorensenMetric
+
+ def nGram: NGramMetric.type = NGramMetric
+
+ def weightedLevenshtein: WeightedLevenshteinMetric.type = WeightedLevenshteinMetric
+}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetricLike.scala b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetricLike.scala
index 506989f..87c87ce 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetricLike.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/ConfigurableStringMetricLike.scala
@@ -1,9 +1,5 @@
package com.rockymadden.stringmetric
-trait ConfigurableStringMetricLike[R, O] extends ConfigurableMetricLike[String, R, O] { this: StringFilterLike =>
+trait ConfigurableStringMetricLike[R, O] extends ConfigurableMetricLike[String, R, O] {
def compare(charArray1: Array[Char], charArray2: Array[Char])(implicit o: O): Option[R]
-
- override def filter(charArray: Array[Char]): Array[Char] = charArray
-
- override def filter(string: String): String = string
}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/Filter.scala b/core/source/core/scala/com/rockymadden/stringmetric/Filter.scala
new file mode 100755
index 0000000..17efad9
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/Filter.scala
@@ -0,0 +1,3 @@
+package com.rockymadden.stringmetric
+
+trait Filter[T] extends FilterLike[T]
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/Metric.scala b/core/source/core/scala/com/rockymadden/stringmetric/Metric.scala
new file mode 100755
index 0000000..b20755e
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/Metric.scala
@@ -0,0 +1,3 @@
+package com.rockymadden.stringmetric
+
+trait Metric[T, R] extends MetricLike[T, R]
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/StringAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/StringAlgorithm.scala
new file mode 100755
index 0000000..f8e4a50
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/StringAlgorithm.scala
@@ -0,0 +1,36 @@
+package com.rockymadden.stringmetric
+
+import com.rockymadden.stringmetric.phonetic.{ MetaphoneAlgorithm, NysiisAlgorithm, RefinedSoundexAlgorithm, SoundexAlgorithm }
+
+trait StringAlgorithm[R] extends Algorithm[String, R] with StringAlgorithmLike[R] with StringFilterLike {
+ override def filter(charArray: Array[Char]): Array[Char] = charArray
+
+ override def filter(string: String): String = string
+}
+
+object StringAlgorithm {
+ def computeWithMetaphone(charArray: Array[Char]): Option[Array[Char]] = MetaphoneAlgorithm().compute(charArray)
+
+ def computeWithMetaphone(string: String): Option[String] = MetaphoneAlgorithm().compute(string)
+
+ def computeWithNysiis(charArray: Array[Char]): Option[Array[Char]] = NysiisAlgorithm().compute(charArray)
+
+ def computeWithNysiis(string: String): Option[String] = NysiisAlgorithm().compute(string)
+
+ def computeWithRefinedSoundex(charArray: Array[Char]): Option[Array[Char]] =
+ RefinedSoundexAlgorithm().compute(charArray)
+
+ def computeWithRefinedSoundex(string: String): Option[String] = RefinedSoundexAlgorithm().compute(string)
+
+ def computeWithSoundex(charArray: Array[Char]): Option[Array[Char]] = SoundexAlgorithm().compute(charArray)
+
+ def computeWithSoundex(string: String): Option[String] = SoundexAlgorithm().compute(string)
+
+ def metaphone: MetaphoneAlgorithm.type = MetaphoneAlgorithm
+
+ def nysiis: NysiisAlgorithm.type = NysiisAlgorithm
+
+ def refinedSoundex: RefinedSoundexAlgorithm.type = RefinedSoundexAlgorithm
+
+ def soundex: SoundexAlgorithm.type = SoundexAlgorithm
+}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/StringAlgorithmLike.scala b/core/source/core/scala/com/rockymadden/stringmetric/StringAlgorithmLike.scala
index d9cf6a7..9b734ac 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/StringAlgorithmLike.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/StringAlgorithmLike.scala
@@ -1,46 +1,5 @@
package com.rockymadden.stringmetric
-import com.rockymadden.stringmetric.phonetic.{ MetaphoneAlgorithm, NysiisAlgorithm, RefinedSoundexAlgorithm, SoundexAlgorithm }
-import com.rockymadden.stringmetric.similarity.NGramAlgorithm
-
-trait StringAlgorithmLike[R] extends AlgorithmLike[String, R] { this: StringFilterLike =>
+trait StringAlgorithmLike[R] extends AlgorithmLike[String, R] {
def compute(charArray: Array[Char]): Option[Array[_]]
-
- override def filter(charArray: Array[Char]): Array[Char] = charArray
-
- override def filter(string: String): String = string
-}
-
-object StringAlgorithmLike {
- def computeWithMetaphone(charArray: Array[Char]): Option[Array[Char]] = MetaphoneAlgorithm().compute(charArray)
-
- def computeWithMetaphone(string: String): Option[String] = MetaphoneAlgorithm().compute(string)
-
- def computeWithNGram(charArray: Array[Char])(n: Int): Option[Array[Array[Char]]] =
- NGramAlgorithm().compute(charArray)(n)
-
- def computeWithNGram(string: String)(n: Int): Option[Array[String]] = NGramAlgorithm().compute(string)(n)
-
- def computeWithNysiis(charArray: Array[Char]): Option[Array[Char]] = NysiisAlgorithm().compute(charArray)
-
- def computeWithNysiis(string: String): Option[String] = NysiisAlgorithm().compute(string)
-
- def computeWithRefinedSoundex(charArray: Array[Char]): Option[Array[Char]] =
- RefinedSoundexAlgorithm().compute(charArray)
-
- def computeWithRefinedSoundex(string: String): Option[String] = RefinedSoundexAlgorithm().compute(string)
-
- def computeWithSoundex(charArray: Array[Char]): Option[Array[Char]] = SoundexAlgorithm().compute(charArray)
-
- def computeWithSoundex(string: String): Option[String] = SoundexAlgorithm().compute(string)
-
- def metaphone: MetaphoneAlgorithm.type = MetaphoneAlgorithm
-
- def nGram: NGramAlgorithm.type = NGramAlgorithm
-
- def nysiis: NysiisAlgorithm.type = NysiisAlgorithm
-
- def refinedSoundex: RefinedSoundexAlgorithm.type = RefinedSoundexAlgorithm
-
- def soundex: SoundexAlgorithm.type = SoundexAlgorithm
}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/StringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/StringFilter.scala
new file mode 100755
index 0000000..e6895b1
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/StringFilter.scala
@@ -0,0 +1,35 @@
+package com.rockymadden.stringmetric
+
+import com.rockymadden.stringmetric.filter._
+
+trait StringFilter extends StringFilterLike {
+ def filter(charArray: Array[Char]): Array[Char]
+}
+
+object StringFilter {
+ def asciiControl = new StringFilterDelegate with AsciiControlStringFilter
+
+ def asciiControlOnly = new StringFilterDelegate with AsciiControlOnlyStringFilter
+
+ def asciiLetterCase = new StringFilterDelegate with AsciiLetterCaseStringFilter
+
+ def asciiLetterNumber = new StringFilterDelegate with AsciiLetterNumberStringFilter
+
+ def asciiLetterNumberOnly = new StringFilterDelegate with AsciiLetterNumberOnlyStringFilter
+
+ def asciiLetter = new StringFilterDelegate with AsciiLetterStringFilter
+
+ def asciiLetterOnly = new StringFilterDelegate with AsciiLetterOnlyStringFilter
+
+ def asciiNumber = new StringFilterDelegate with AsciiNumberStringFilter
+
+ def asciiNumberOnly = new StringFilterDelegate with AsciiNumberOnlyStringFilter
+
+ def asciiSpace = new StringFilterDelegate with AsciiSpaceStringFilter
+
+ def asciiSymbol = new StringFilterDelegate with AsciiSymbolStringFilter
+
+ def asciiSymbolOnly = new StringFilterDelegate with AsciiSymbolOnlyStringFilter
+
+ def delegate = new StringFilterDelegate
+}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/StringFilterLike.scala b/core/source/core/scala/com/rockymadden/stringmetric/StringFilterLike.scala
index c2d604a..e9672e8 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/StringFilterLike.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/StringFilterLike.scala
@@ -1,35 +1,5 @@
package com.rockymadden.stringmetric
-import com.rockymadden.stringmetric.filter._
-
trait StringFilterLike extends FilterLike[String] {
def filter(charArray: Array[Char]): Array[Char]
}
-
-object StringFilterLike {
- def asciiControl = new StringFilterDelegate with AsciiControlStringFilter
-
- def asciiControlOnly = new StringFilterDelegate with AsciiControlOnlyStringFilter
-
- def asciiLetterCase = new StringFilterDelegate with AsciiLetterCaseStringFilter
-
- def asciiLetterNumber = new StringFilterDelegate with AsciiLetterNumberStringFilter
-
- def asciiLetterNumberOnly = new StringFilterDelegate with AsciiLetterNumberOnlyStringFilter
-
- def asciiLetter = new StringFilterDelegate with AsciiLetterStringFilter
-
- def asciiLetterOnly = new StringFilterDelegate with AsciiLetterOnlyStringFilter
-
- def asciiNumber = new StringFilterDelegate with AsciiNumberStringFilter
-
- def asciiNumberOnly = new StringFilterDelegate with AsciiNumberOnlyStringFilter
-
- def asciiSpace = new StringFilterDelegate with AsciiSpaceStringFilter
-
- def asciiSymbol = new StringFilterDelegate with AsciiSymbolStringFilter
-
- def asciiSymbolOnly = new StringFilterDelegate with AsciiSymbolOnlyStringFilter
-
- def delegate = new StringFilterDelegate
-}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/StringMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/StringMetric.scala
new file mode 100755
index 0000000..65fcd22
--- /dev/null
+++ b/core/source/core/scala/com/rockymadden/stringmetric/StringMetric.scala
@@ -0,0 +1,73 @@
+package com.rockymadden.stringmetric
+
+import com.rockymadden.stringmetric.phonetic.{ MetaphoneMetric, NysiisMetric, RefinedSoundexMetric, SoundexMetric }
+import com.rockymadden.stringmetric.similarity._
+
+trait StringMetric[R] extends Metric[String, R] with StringMetricLike[R] with StringFilterLike {
+ override def filter(charArray: Array[Char]): Array[Char] = charArray
+
+ override def filter(string: String): String = string
+}
+
+object StringMetric {
+ def compareWithHamming(charArray1: Array[Char], charArray2: Array[Char]): Option[Int] =
+ HammingMetric().compare(charArray1, charArray2)
+
+ def compareWithHamming(string1: String, string2: String): Option[Int] = HammingMetric().compare(string1, string2)
+
+ def compareWithJaro(charArray1: Array[Char], charArray2: Array[Char]): Option[Double] =
+ JaroMetric().compare(charArray1, charArray2)
+
+ def compareWithJaro(string1: String, string2: String): Option[Double] = JaroMetric().compare(string1, string2)
+
+ def compareWithJaroWinkler(charArray1: Array[Char], charArray2: Array[Char]): Option[Double] =
+ JaroWinklerMetric().compare(charArray1, charArray2)
+
+ def compareWithJaroWinkler(string1: String, string2: String): Option[Double] =
+ JaroWinklerMetric().compare(string1, string2)
+
+ def compareWithLevenshtein(charArray1: Array[Char], charArray2: Array[Char]): Option[Int] =
+ LevenshteinMetric().compare(charArray1, charArray2)
+
+ def compareWithLevenshtein(string1: String, string2: String): Option[Int] =
+ LevenshteinMetric().compare(string1, string2)
+
+ def compareWithMetaphone(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] =
+ MetaphoneMetric().compare(charArray1, charArray2)
+
+ def compareWithMetaphone(string1: String, string2: String): Option[Boolean] =
+ MetaphoneMetric().compare(string1, string2)
+
+ def compareWithNysiis(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] =
+ NysiisMetric().compare(charArray1, charArray2)
+
+ def compareWithNysiis(string1: String, string2: String): Option[Boolean] = NysiisMetric().compare(string1, string2)
+
+ def compareWithRefinedSoundex(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] =
+ RefinedSoundexMetric().compare(charArray1, charArray2)
+
+ def compareWithRefinedSoundex(string1: String, string2: String): Option[Boolean] =
+ RefinedSoundexMetric().compare(string1, string2)
+
+ def compareWithSoundex(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] =
+ SoundexMetric().compare(charArray1, charArray2)
+
+ def compareWithSoundex(string1: String, string2: String): Option[Boolean] =
+ SoundexMetric().compare(string1, string2)
+
+ def hamming: HammingMetric.type = HammingMetric
+
+ def jaro: JaroMetric.type = JaroMetric
+
+ def jaroWinkler: JaroWinklerMetric.type = JaroWinklerMetric
+
+ def levenshtein: LevenshteinMetric.type = LevenshteinMetric
+
+ def metaphone: MetaphoneMetric.type = MetaphoneMetric
+
+ def nysiis: NysiisMetric.type = NysiisMetric
+
+ def refinedSoundex: RefinedSoundexMetric.type = RefinedSoundexMetric
+
+ def soundex: SoundexMetric.type = SoundexMetric
+}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/StringMetricLike.scala b/core/source/core/scala/com/rockymadden/stringmetric/StringMetricLike.scala
index a0767e3..4ae93b5 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/StringMetricLike.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/StringMetricLike.scala
@@ -1,103 +1,5 @@
package com.rockymadden.stringmetric
-import com.rockymadden.stringmetric.phonetic.{ MetaphoneMetric, NysiisMetric, RefinedSoundexMetric, SoundexMetric }
-import com.rockymadden.stringmetric.similarity._
-
-trait StringMetricLike[R] extends MetricLike[String, R] { this: StringFilterLike =>
+trait StringMetricLike[R] extends MetricLike[String, R] {
def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[R]
-
- override def filter(charArray: Array[Char]): Array[Char] = charArray
-
- override def filter(string: String): String = string
-}
-
-object StringMetricLike {
- def compareWithDiceSorensen(charArray1: Array[Char], charArray2: Array[Char])(n: Int): Option[Double] =
- DiceSorensenMetric().compare(charArray1, charArray2)(n)
-
- def compareWithDiceSorensen(string1: String, string2: String)(n: Int): Option[Double] =
- DiceSorensenMetric().compare(string1, string2)(n)
-
- def compareWithHamming(charArray1: Array[Char], charArray2: Array[Char]): Option[Int] =
- HammingMetric().compare(charArray1, charArray2)
-
- def compareWithHamming(string1: String, string2: String): Option[Int] = HammingMetric().compare(string1, string2)
-
- def compareWithJaro(charArray1: Array[Char], charArray2: Array[Char]): Option[Double] =
- JaroMetric().compare(charArray1, charArray2)
-
- def compareWithJaro(string1: String, string2: String): Option[Double] = JaroMetric().compare(string1, string2)
-
- def compareWithJaroWinkler(charArray1: Array[Char], charArray2: Array[Char]): Option[Double] =
- JaroWinklerMetric().compare(charArray1, charArray2)
-
- def compareWithJaroWinkler(string1: String, string2: String): Option[Double] =
- JaroWinklerMetric().compare(string1, string2)
-
- def compareWithLevenshtein(charArray1: Array[Char], charArray2: Array[Char]): Option[Int] =
- LevenshteinMetric().compare(charArray1, charArray2)
-
- def compareWithLevenshtein(string1: String, string2: String): Option[Int] =
- LevenshteinMetric().compare(string1, string2)
-
- def compareWithMetaphone(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] =
- MetaphoneMetric().compare(charArray1, charArray2)
-
- def compareWithMetaphone(string1: String, string2: String): Option[Boolean] =
- MetaphoneMetric().compare(string1, string2)
-
- def compareWithNGram(charArray1: Array[Char], charArray2: Array[Char])(n: Int): Option[Double] =
- NGramMetric().compare(charArray1, charArray2)(n)
-
- def compareWithNGram(string1: String, string2: String)(n: Int): Option[Double] =
- NGramMetric().compare(string1, string2)(n)
-
- def compareWithNysiis(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] =
- NysiisMetric().compare(charArray1, charArray2)
-
- def compareWithNysiis(string1: String, string2: String): Option[Boolean] = NysiisMetric().compare(string1, string2)
-
- def compareWithRefinedSoundex(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] =
- RefinedSoundexMetric().compare(charArray1, charArray2)
-
- def compareWithRefinedSoundex(string1: String, string2: String): Option[Boolean] =
- RefinedSoundexMetric().compare(string1, string2)
-
- def compareWithSoundex(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] =
- SoundexMetric().compare(charArray1, charArray2)
-
- def compareWithSoundex(string1: String, string2: String): Option[Boolean] =
- SoundexMetric().compare(string1, string2)
-
- def compareWithWeightedLevenshtein(charArray1: Array[Char], charArray2: Array[Char])
- (options: (BigDecimal, BigDecimal, BigDecimal)): Option[Double] =
-
- WeightedLevenshteinMetric().compare(charArray1, charArray2)(options)
-
- def compareWithWeightedLevenshtein(string1: String, string2: String)
- (options: (BigDecimal, BigDecimal, BigDecimal)): Option[Double] =
-
- WeightedLevenshteinMetric().compare(string1, string2)(options)
-
- def diceSorensen: DiceSorensenMetric.type = DiceSorensenMetric
-
- def hamming: HammingMetric.type = HammingMetric
-
- def jaro: JaroMetric.type = JaroMetric
-
- def jaroWinkler: JaroWinklerMetric.type = JaroWinklerMetric
-
- def levenshtein: LevenshteinMetric.type = LevenshteinMetric
-
- def metaphone: MetaphoneMetric.type = MetaphoneMetric
-
- def nGram: NGramMetric.type = NGramMetric
-
- def nysiis: NysiisMetric.type = NysiisMetric
-
- def refinedSoundex: RefinedSoundexMetric.type = RefinedSoundexMetric
-
- def soundex: SoundexMetric.type = SoundexMetric
-
- def weightedLevenshtein: WeightedLevenshteinMetric.type = WeightedLevenshteinMetric
}
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlOnlyStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlOnlyStringFilter.scala
index 7fa05e3..ed39e1f 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlOnlyStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlOnlyStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures only ASCII control characters matter. */
-trait AsciiControlOnlyStringFilter extends StringFilterLike {
+trait AsciiControlOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(charArray.filter(c => (c <= 31 || c == 127)))
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlStringFilter.scala
index 382fc43..b1b59f8 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiControlStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures ASCII controls do not matter. */
-trait AsciiControlStringFilter extends StringFilterLike {
+trait AsciiControlStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(charArray.filter(c => !(c <= 31 || c == 127)))
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterCaseStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterCaseStringFilter.scala
index 68cbd59..f9c3aa4 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterCaseStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterCaseStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures ASCII letter case-sensitivity does not matter. */
-trait AsciiLetterCaseStringFilter extends StringFilterLike {
+trait AsciiLetterCaseStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(charArray.map(c => if (c >= 65 && c <= 90) (c + 32).toChar else c))
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala
index c1fcbd4..b613442 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures only ASCII letters and numbers matter. */
-trait AsciiLetterNumberOnlyStringFilter extends StringFilterLike {
+trait AsciiLetterNumberOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
charArray.filter(c =>
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberStringFilter.scala
index 1c47416..e45d30a 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterNumberStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures ASCII letters and numbers do not matter. */
-trait AsciiLetterNumberStringFilter extends StringFilterLike {
+trait AsciiLetterNumberStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
charArray.filter(c =>
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterOnlyStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterOnlyStringFilter.scala
index 09c40c5..07422aa 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterOnlyStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterOnlyStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures only ASCII letters matter. */
-trait AsciiLetterOnlyStringFilter extends StringFilterLike {
+trait AsciiLetterOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(charArray.filter(c => ((c >= 65 && c <= 90 ) || (c >= 97 && c <= 122))))
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterStringFilter.scala
index c9c0890..08a05ee 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiLetterStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures ASCII letters do not matter. */
-trait AsciiLetterStringFilter extends StringFilterLike {
+trait AsciiLetterStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(charArray.filter(c => !((c >= 65 && c <= 90 ) || (c >= 97 && c <= 122))))
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberOnlyStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberOnlyStringFilter.scala
index e98f871..1a18645 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberOnlyStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberOnlyStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures only ASCII numbers matter. */
-trait AsciiNumberOnlyStringFilter extends StringFilterLike {
+trait AsciiNumberOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(charArray.filter(c => (c >= 48 && c <= 57 )))
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberStringFilter.scala
index d74b266..860d9d3 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiNumberStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures ASCII numbers do not matter. */
-trait AsciiNumberStringFilter extends StringFilterLike {
+trait AsciiNumberStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(charArray.filter(c => !(c >= 48 && c <= 57)))
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSpaceStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSpaceStringFilter.scala
index ff3df19..161b9fe 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSpaceStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSpaceStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures ASCII spaces do not matter. */
-trait AsciiSpaceStringFilter extends StringFilterLike {
+trait AsciiSpaceStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] = super.filter(charArray.filter(_ != ' '))
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala
index 605a3c0..2876057 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures only ASCII symbols matter. */
-trait AsciiSymbolOnlyStringFilter extends StringFilterLike {
+trait AsciiSymbolOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
charArray.filter(c =>
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolStringFilter.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolStringFilter.scala
index 6ed85ed..0431f05 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolStringFilter.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/AsciiSymbolStringFilter.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
/** Ensures ASCII symbols do not matter. */
-trait AsciiSymbolStringFilter extends StringFilterLike {
+trait AsciiSymbolStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
charArray.filter(c =>
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/filter/StringFilterDelegate.scala b/core/source/core/scala/com/rockymadden/stringmetric/filter/StringFilterDelegate.scala
index 3264568..8ece42d 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/filter/StringFilterDelegate.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/filter/StringFilterDelegate.scala
@@ -1,8 +1,8 @@
package com.rockymadden.stringmetric.filter
-import com.rockymadden.stringmetric.StringFilterLike
+import com.rockymadden.stringmetric.StringFilter
-class StringFilterDelegate extends StringFilterLike {
+class StringFilterDelegate extends StringFilter {
override def filter(charArray: Array[Char]): Array[Char] = charArray
override def filter(string: String): String = string
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 796a922..573d90b 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneAlgorithm.scala
@@ -1,11 +1,11 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringAlgorithmLike, StringFilterLike }
+import com.rockymadden.stringmetric.StringAlgorithm
import com.rockymadden.stringmetric.phonetic.Alphabet._
import scala.annotation.{ switch, tailrec }
/** An implementation of the Metaphone algorithm. */
-class MetaphoneAlgorithm extends StringAlgorithmLike[String] with StringFilterLike {
+class MetaphoneAlgorithm extends StringAlgorithm[String] {
final override def compute(charArray: Array[Char]): Option[Array[Char]] = {
val fca = filter(charArray)
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 a9d0a3c..5e5dc70 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/MetaphoneMetric.scala
@@ -1,10 +1,10 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.StringMetric
import com.rockymadden.stringmetric.phonetic.Alphabet._
/** A implementation of Metaphone metric. */
-class MetaphoneMetric extends StringMetricLike[Boolean] with StringFilterLike {
+class MetaphoneMetric extends StringMetric[Boolean] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] = {
val fca1 = filter(charArray1)
lazy val fca2 = filter(charArray2)
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 b92bbcd..b218a9c 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisAlgorithm.scala
@@ -1,11 +1,11 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringAlgorithmLike, StringFilterLike }
+import com.rockymadden.stringmetric.StringAlgorithm
import com.rockymadden.stringmetric.phonetic.Alphabet._
import scala.annotation.{ switch, tailrec }
/** An implementation of the NYSIIS algorithm. */
-class NysiisAlgorithm extends StringAlgorithmLike[String] with StringFilterLike {
+class NysiisAlgorithm extends StringAlgorithm[String] {
final override def compute(charArray: Array[Char]): Option[Array[Char]] = {
val fca = filter(charArray)
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 52b3e80..2595593 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/NysiisMetric.scala
@@ -1,10 +1,10 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.StringMetric
import com.rockymadden.stringmetric.phonetic.Alphabet._
/** An implementation of the NYSIIS metric. */
-class NysiisMetric extends StringMetricLike[Boolean] with StringFilterLike {
+class NysiisMetric extends StringMetric[Boolean] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] = {
val unequal = (c1: Char, c2: Char) => {
val lc1 = c1.toLower
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 54ff8be..8f81e6c 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisAlgorithm.scala
@@ -1,11 +1,11 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringAlgorithmLike, StringFilterLike }
+import com.rockymadden.stringmetric.StringAlgorithm
import com.rockymadden.stringmetric.phonetic.Alphabet._
import scala.annotation.{ switch, tailrec }
/** An implementation of the refined NYSIIS algorithm. */
-class RefinedNysiisAlgorithm extends StringAlgorithmLike[String] with StringFilterLike {
+class RefinedNysiisAlgorithm extends StringAlgorithm[String] {
final override def compute(charArray: Array[Char]): Option[Array[Char]] = {
val fca = filter(charArray)
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 a1ffcdd..290cd15 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedNysiisMetric.scala
@@ -1,10 +1,10 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.StringMetric
import com.rockymadden.stringmetric.phonetic.Alphabet._
/** An implementation of the refined NYSIIS metric. */
-class RefinedNysiisMetric extends StringMetricLike[Boolean] with StringFilterLike {
+class RefinedNysiisMetric extends StringMetric[Boolean] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] = {
val unequal = (c1: Char, c2: Char) => {
val lc1 = c1.toLower
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 3a3deaa..60f2a31 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexAlgorithm.scala
@@ -1,11 +1,11 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringAlgorithmLike, StringFilterLike }
+import com.rockymadden.stringmetric.StringAlgorithm
import com.rockymadden.stringmetric.phonetic.Alphabet._
import scala.annotation.{ switch, tailrec }
/** An implementation of the refined Soundex algorithm. */
-class RefinedSoundexAlgorithm extends StringAlgorithmLike[String] with StringFilterLike {
+class RefinedSoundexAlgorithm extends StringAlgorithm[String] {
final override def compute(charArray: Array[Char]): Option[Array[Char]] = {
val fca = filter(charArray)
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 dae089a..f65fc4e 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/RefinedSoundexMetric.scala
@@ -1,10 +1,10 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.StringMetric
import com.rockymadden.stringmetric.phonetic.Alphabet._
/** An implementation of the refined Soundex metric. */
-class RefinedSoundexMetric extends StringMetricLike[Boolean] with StringFilterLike {
+class RefinedSoundexMetric extends StringMetric[Boolean] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] = {
val fca1 = filter(charArray1)
lazy val fca2 = filter(charArray2)
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 f322225..4b217a2 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexAlgorithm.scala
@@ -1,11 +1,11 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringAlgorithmLike, StringFilterLike }
+import com.rockymadden.stringmetric.StringAlgorithm
import com.rockymadden.stringmetric.phonetic.Alphabet._
import scala.annotation.{ switch, tailrec }
/** An implementation of the Soundex algorithm. */
-class SoundexAlgorithm extends StringAlgorithmLike[String] with StringFilterLike {
+class SoundexAlgorithm extends StringAlgorithm[String] {
final override def compute(charArray: Array[Char]): Option[Array[Char]] = {
val fca = filter(charArray)
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 bfd0dd5..89a26be 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/phonetic/SoundexMetric.scala
@@ -1,10 +1,10 @@
package com.rockymadden.stringmetric.phonetic
-import com.rockymadden.stringmetric.{ StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.StringMetric
import com.rockymadden.stringmetric.phonetic.Alphabet._
/** An implementation of the Soundex metric. */
-class SoundexMetric extends StringMetricLike[Boolean] with StringFilterLike {
+class SoundexMetric extends StringMetric[Boolean] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Boolean] = {
val fca1 = filter(charArray1)
lazy val fca2 = filter(charArray2)
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetric.scala
index f5afcb2..9e3e968 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/DiceSorensenMetric.scala
@@ -1,12 +1,12 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ ConfigurableStringMetricLike, MatchTuple, StringFilterLike }
+import com.rockymadden.stringmetric.{ ConfigurableStringMetric, MatchTuple }
/**
* An implementation of the Dice/Sorensen metric. This implementation differs in that n-gram size is required.
* Traditionally, the algorithm uses bigrams.
*/
-class DiceSorensenMetric extends ConfigurableStringMetricLike[Double, Int] with StringFilterLike {
+class DiceSorensenMetric extends ConfigurableStringMetric[Double, Int] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char])(implicit n: Int): Option[Double] = {
if (n <= 0) throw new IllegalArgumentException("Expected valid n.")
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/HammingMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/HammingMetric.scala
index d16554b..8256929 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/HammingMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/HammingMetric.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ CompareTuple, StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.{ CompareTuple, StringMetric }
/** An implementation of the Hamming metric. */
-class HammingMetric extends StringMetricLike[Int] with StringFilterLike {
+class HammingMetric extends StringMetric[Int] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Int] = {
val fca1 = filter(charArray1)
lazy val fca2 = filter(charArray2)
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/JaroMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/JaroMetric.scala
index a21bd6e..c44fde2 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/JaroMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/JaroMetric.scala
@@ -1,13 +1,13 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ CompareTuple, MatchTuple, StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.{ CompareTuple, MatchTuple, StringMetric }
import scala.collection.mutable.{ ArrayBuffer, HashSet }
/**
* An implementation of the Jaro metric. One differing detail in this implementation is that if a character is matched
* in string2, it cannot be matched upon again. This results in a more penalized distance in these scenarios.
*/
-class JaroMetric extends StringMetricLike[Double] with StringFilterLike {
+class JaroMetric extends StringMetric[Double] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Double] = {
val fca1 = filter(charArray1)
lazy val fca2 = filter(charArray2)
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetric.scala
index 4239ed4..56dfc55 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/JaroWinklerMetric.scala
@@ -1,13 +1,13 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.StringMetric
/**
* An implementation of the Jaro-Winkler metric. One differing detail in this implementation is that if a character is
* matched in string2, it cannot be matched upon again. This results in a more penalized distance in these scenarios
* (e.g. comparing henka and henkan distance is 0.9666 versus the typical 0.9722).
*/
-class JaroWinklerMetric extends StringMetricLike[Double] with StringFilterLike {
+class JaroWinklerMetric extends StringMetric[Double] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Double] = {
val fca1 = filter(charArray1)
val fca2 = filter(charArray2)
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetric.scala
index f7d47b3..7dd1643 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/LevenshteinMetric.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ CompareTuple, StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.{ CompareTuple, StringMetric }
/** An implementation of the Levenshtein metric. */
-class LevenshteinMetric extends StringMetricLike[Int] with StringFilterLike {
+class LevenshteinMetric extends StringMetric[Int] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Int] = {
val fca1 = filter(charArray1)
lazy val fca2 = filter(charArray2)
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithm.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithm.scala
index 9f96794..b50ed7d 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithm.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/NGramAlgorithm.scala
@@ -1,10 +1,10 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ ConfigurableStringAlgorithmLike, StringFilterLike }
+import com.rockymadden.stringmetric.ConfigurableStringAlgorithm
import scala.annotation.tailrec
/** An implementation of the N-Gram algorithm. */
-class NGramAlgorithm extends ConfigurableStringAlgorithmLike[Array[String], Int] with StringFilterLike {
+class NGramAlgorithm extends ConfigurableStringAlgorithm[Array[String], Int] {
final override def compute(charArray: Array[Char])(implicit n: Int): Option[Array[Array[Char]]] = {
if (n <= 0) throw new IllegalArgumentException("Expected valid n.")
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/NGramMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/NGramMetric.scala
index 362c06c..c621765 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/NGramMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/NGramMetric.scala
@@ -1,10 +1,10 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ ConfigurableStringMetricLike, MatchTuple, StringFilterLike }
+import com.rockymadden.stringmetric.{ ConfigurableStringMetric, MatchTuple }
import scala.math
/** An implementation of the N-Gram metric. */
-class NGramMetric extends ConfigurableStringMetricLike[Double, Int] with StringFilterLike {
+class NGramMetric extends ConfigurableStringMetric[Double, Int] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char])(implicit n: Int): Option[Double] = {
if (n <= 0) throw new IllegalArgumentException("Expected valid n.")
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/RatcliffObershelpMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/RatcliffObershelpMetric.scala
index 23959b8..7d2ef10 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/RatcliffObershelpMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/RatcliffObershelpMetric.scala
@@ -1,9 +1,9 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ CompareTuple, StringFilterLike, StringMetricLike }
+import com.rockymadden.stringmetric.{ CompareTuple, StringMetric }
/** An implementation of the Ratcliff/Obershelp metric. */
-class RatcliffObershelpMetric extends StringMetricLike[Double] with StringFilterLike {
+class RatcliffObershelpMetric extends StringMetric[Double] {
final override def compare(charArray1: Array[Char], charArray2: Array[Char]): Option[Double] = {
val fca1 = filter(charArray1)
lazy val fca2 = filter(charArray2)
diff --git a/core/source/core/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetric.scala b/core/source/core/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetric.scala
index 05f8c82..cbc9fe5 100755
--- a/core/source/core/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetric.scala
+++ b/core/source/core/scala/com/rockymadden/stringmetric/similarity/WeightedLevenshteinMetric.scala
@@ -1,11 +1,11 @@
package com.rockymadden.stringmetric.similarity
-import com.rockymadden.stringmetric.{ CompareTuple, ConfigurableStringMetricLike, StringFilterLike }
+import com.rockymadden.stringmetric.{ CompareTuple, ConfigurableStringMetric }
import scala.math.BigDecimal
/** An implementation of a weighted Levenshtein metric. */
class WeightedLevenshteinMetric
- extends ConfigurableStringMetricLike[Double, (BigDecimal, BigDecimal, BigDecimal)] with StringFilterLike {
+ extends ConfigurableStringMetric[Double, (BigDecimal, BigDecimal, BigDecimal)] {
/** Options order is delete, insert, then substitute weight. */
final override def compare(charArray1: Array[Char], charArray2: Array[Char])