diff options
author | Rocky Madden <git@rockymadden.com> | 2014-03-26 16:09:24 -0600 |
---|---|---|
committer | Rocky Madden <git@rockymadden.com> | 2014-03-26 16:09:24 -0600 |
commit | 3c806b88e9169ed742ae5740d81fbbb24f0ca768 (patch) | |
tree | 4b6a75a1042000841200b6af031abe62b542ab71 /core/src/main/scala/com/rockymadden/stringmetric/Metric.scala | |
parent | a25d9e70528a0b2bab96cc55ede9232076fd4299 (diff) | |
download | stringmetric-3c806b88e9169ed742ae5740d81fbbb24f0ca768.tar.gz stringmetric-3c806b88e9169ed742ae5740d81fbbb24f0ca768.tar.bz2 stringmetric-3c806b88e9169ed742ae5740d81fbbb24f0ca768.zip |
Removed module structure.
Diffstat (limited to 'core/src/main/scala/com/rockymadden/stringmetric/Metric.scala')
-rwxr-xr-x | core/src/main/scala/com/rockymadden/stringmetric/Metric.scala | 105 |
1 files changed, 2 insertions, 103 deletions
diff --git a/core/src/main/scala/com/rockymadden/stringmetric/Metric.scala b/core/src/main/scala/com/rockymadden/stringmetric/Metric.scala index 6ac8880..b192ed9 100755 --- a/core/src/main/scala/com/rockymadden/stringmetric/Metric.scala +++ b/core/src/main/scala/com/rockymadden/stringmetric/Metric.scala @@ -1,106 +1,5 @@ package com.rockymadden.stringmetric -object Metric { - import Transform._ - - - trait Metric[A, B] { - def compare(a: A, b: A): Option[B] - } - - - object Metric { - implicit def toStringMetricDecorator[A](sa: StringMetric[A]): StringMetricDecorator[A] = - new StringMetricDecorator[A](sa) - } - - - trait StringMetric[A] extends Metric[Array[Char], A] { - def compare(a: String, b: String): Option[A] - } - - - object StringMetric { - val DiceSorensen = similarity.DiceSorensenMetric - val Hamming = similarity.HammingMetric - val Jaccard = similarity.JaccardMetric - val Jaro = similarity.JaroMetric - val JaroWinkler = similarity.JaroWinklerMetric - val Levenshtein = similarity.LevenshteinMetric - val Metaphone = phonetic.MetaphoneMetric - val NGram = similarity.NGramMetric - val Nysiis = phonetic.NysiisMetric - val Overlap = similarity.OverlapMetric - val RefinedNysiis = phonetic.RefinedNysiisMetric - val RefinedSoundex = phonetic.RefinedSoundexMetric - val Soundex = phonetic.SoundexMetric - val WeightedLevenshtein = similarity.WeightedLevenshteinMetric - - def compareWithDiceSorensen(n: Int)(a: Array[Char], b: Array[Char]) = DiceSorensen(n).compare(a, b) - - def compareWithHamming(a: Array[Char], b: Array[Char]) = Hamming.compare(a, b) - - def compareWithJaccard(n: Int)(a: Array[Char], b: Array[Char]) = Jaccard(n).compare(a, b) - - def compareWithJaro(a: Array[Char], b: Array[Char]) = Jaro.compare(a, b) - - def compareWithJaroWinkler(a: Array[Char], b: Array[Char]) = JaroWinkler.compare(a, b) - - def compareWithLevenshtein(a: Array[Char], b: Array[Char]) = Levenshtein.compare(a, b) - - def compareWithMetaphone(a: Array[Char], b: Array[Char]) = Metaphone.compare(a, b) - - def compareWithNGram(n: Int)(a: Array[Char], b: Array[Char]) = NGram(n).compare(a, b) - - def compareWithNysiis(a: Array[Char], b: Array[Char]) = Nysiis.compare(a, b) - - def compareWithOverlap(n: Int)(a: Array[Char], b: Array[Char]) = Overlap(n).compare(a, b) - - def compareWithRefinedNysiis(a: Array[Char], b: Array[Char]) = RefinedNysiis.compare(a, b) - - def compareWithRefinedSoundex(a: Array[Char], b: Array[Char]) = RefinedSoundex.compare(a, b) - - def compareWithSoundex(a: Array[Char], b: Array[Char]) = Soundex.compare(a, b) - - def compareWithWeightedLevenshtein(delete: BigDecimal, insert: BigDecimal, substitute: BigDecimal) - (a: Array[Char], b: Array[Char]) = - - WeightedLevenshtein(delete, insert, substitute).compare(a, b) - } - - - sealed trait MetricDecorator[A, B] { - val withMemoization: Metric[A, B] - - val withTransform: (Transform[A] => Metric[A, B]) - } - - - final case class StringMetricDecorator[A](sm: StringMetric[A]) extends MetricDecorator[Array[Char], A] { - override val withMemoization: StringMetric[A] = new StringMetric[A] { - private val base: StringMetric[A] = sm - private var memo: Map[(String, String), Option[A]] = Map() - - override def compare(a: Array[Char], b: Array[Char]): Option[A] = compare(a.toString, b.toString) - - override def compare(a: String, b: String): Option[A] = { - val t = (a, b) - - if (memo.contains(t)) memo(t) - else { - memo = memo + (t -> base.compare(a, b)) - memo(t) - } - } - } - - override val withTransform: (StringTransform => StringMetric[A]) = (st) => new StringMetric[A] { - private val base: StringMetric[A] = sm - private val transform: StringTransform = st - - override def compare(a: Array[Char], b: Array[Char]): Option[A] = base.compare(transform(a), transform(b)) - - override def compare(a: String, b: String): Option[A] = compare(a.toCharArray, b.toCharArray) - } - } +trait Metric[A, B] { + def compare(a: A, b: A): Option[B] } |