summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRocky Madden <git@rockymadden.com>2012-11-20 13:43:41 -0700
committerRocky Madden <git@rockymadden.com>2012-11-20 13:43:41 -0700
commitc92a5365eeb76ffc3d41015650b92e58fde094ce (patch)
tree192430e732b3d0a9ff12283043a734bea338eeeb
parentc20f08049db4ef5f5fc8d3ab04c42fa8ab5375be (diff)
downloadstringmetric-c92a5365eeb76ffc3d41015650b92e58fde094ce.tar.gz
stringmetric-c92a5365eeb76ffc3d41015650b92e58fde094ce.tar.bz2
stringmetric-c92a5365eeb76ffc3d41015650b92e58fde094ce.zip
More idiomatic handling of Option.
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterCaseStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolStringFilter.scala4
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetric.scala10
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/phonetic/NysiisMetric.scala10
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetric.scala10
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetric.scala10
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/phonetic/SoundexMetric.scala10
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetric.scala15
-rwxr-xr-xcore/source/core/scala/org/hashtree/stringmetric/similarity/NGramMetric.scala12
18 files changed, 41 insertions, 80 deletions
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlOnlyStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlOnlyStringFilter.scala
index e84b3bd..c3fd442 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlOnlyStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlOnlyStringFilter.scala
@@ -6,9 +6,7 @@ import org.hashtree.stringmetric.StringFilter
trait AsciiControlOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
- charArray.filter { c =>
- (c <= 31 || c == 127)
- }
+ charArray.filter(c => (c <= 31 || c == 127))
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlStringFilter.scala
index f9cb6a6..8fdab7e 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiControlStringFilter.scala
@@ -6,9 +6,7 @@ import org.hashtree.stringmetric.StringFilter
trait AsciiControlStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
- charArray.filter { c =>
- !(c <= 31 || c == 127)
- }
+ charArray.filter(c => !(c <= 31 || c == 127))
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterCaseStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterCaseStringFilter.scala
index a1be6bb..d041ded 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterCaseStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterCaseStringFilter.scala
@@ -6,9 +6,7 @@ import org.hashtree.stringmetric.StringFilter
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
- }
+ charArray.map(c => if (c >= 65 && c <= 90) (c + 32).toChar else c)
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala
index 4cd4ea0..595c95c 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberOnlyStringFilter.scala
@@ -6,9 +6,9 @@ import org.hashtree.stringmetric.StringFilter
trait AsciiLetterNumberOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
- charArray.filter { c =>
+ charArray.filter(c =>
((c >= 48 && c <= 57 ) || (c >= 65 && c <= 90 ) || (c >= 97 && c <= 122))
- }
+ )
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberStringFilter.scala
index 05e477c..576b56e 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterNumberStringFilter.scala
@@ -6,9 +6,9 @@ import org.hashtree.stringmetric.StringFilter
trait AsciiLetterNumberStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
- charArray.filter { c =>
+ charArray.filter(c =>
!((c >= 48 && c <= 57 ) || (c >= 65 && c <= 90 ) || (c >= 97 && c <= 122))
- }
+ )
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterOnlyStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterOnlyStringFilter.scala
index c259126..ad38f5d 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterOnlyStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterOnlyStringFilter.scala
@@ -6,9 +6,7 @@ import org.hashtree.stringmetric.StringFilter
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))
- }
+ charArray.filter(c => ((c >= 65 && c <= 90 ) || (c >= 97 && c <= 122)))
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterStringFilter.scala
index 4942f26..456e818 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiLetterStringFilter.scala
@@ -6,9 +6,7 @@ import org.hashtree.stringmetric.StringFilter
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))
- }
+ charArray.filter(c => !((c >= 65 && c <= 90 ) || (c >= 97 && c <= 122)))
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberOnlyStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberOnlyStringFilter.scala
index 02390a5..e19e901 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberOnlyStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberOnlyStringFilter.scala
@@ -6,9 +6,7 @@ import org.hashtree.stringmetric.StringFilter
trait AsciiNumberOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
- charArray.filter { c =>
- (c >= 48 && c <= 57 )
- }
+ charArray.filter(c => (c >= 48 && c <= 57 ))
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberStringFilter.scala
index 6a5264c..fe61fc8 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiNumberStringFilter.scala
@@ -6,9 +6,7 @@ import org.hashtree.stringmetric.StringFilter
trait AsciiNumberStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
- charArray.filter { c =>
- !(c >= 48 && c <= 57)
- }
+ charArray.filter(c => !(c >= 48 && c <= 57))
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala
index 4a58ff3..d581b44 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolOnlyStringFilter.scala
@@ -6,9 +6,9 @@ import org.hashtree.stringmetric.StringFilter
trait AsciiSymbolOnlyStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
- charArray.filter { c =>
+ charArray.filter(c =>
((c >= 32 && c <= 47) || (c >= 58 && c <= 64) || (c >= 91 && c <= 96) || (c >= 123 && c <= 126))
- }
+ )
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolStringFilter.scala b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolStringFilter.scala
index fce3667..8602277 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolStringFilter.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/filter/AsciiSymbolStringFilter.scala
@@ -6,9 +6,9 @@ import org.hashtree.stringmetric.StringFilter
trait AsciiSymbolStringFilter extends StringFilter {
abstract override def filter(charArray: Array[Char]): Array[Char] =
super.filter(
- charArray.filter { c =>
+ charArray.filter(c =>
!((c >= 32 && c <= 47) || (c >= 58 && c <= 64) || (c >= 91 && c <= 96) || (c >= 123 && c <= 126))
- }
+ )
)
abstract override def filter(string: String): String = filter(string.toCharArray).mkString
diff --git a/core/source/core/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetric.scala b/core/source/core/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetric.scala
index 6652e36..efd65b8 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetric.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/phonetic/MetaphoneMetric.scala
@@ -14,13 +14,9 @@ object MetaphoneMetric extends StringMetric with FilterableStringMetric {
lazy val ca2 = stringFilter.filter(charArray2)
if (ca1.length == 0 || !Alphabet.is(ca1.head) || ca2.length == 0 || !Alphabet.is(ca2.head)) None
- else {
- val mp1 = MetaphoneAlgorithm.compute(ca1)
- lazy val mp2 = MetaphoneAlgorithm.compute(ca2)
-
- if (!mp1.isDefined || mp1.get.length == 0 || !mp2.isDefined || mp2.get.length == 0) None
- else Some(mp1.get.sameElements(mp2.get))
- }
+ else MetaphoneAlgorithm.compute(ca1).filter(_.length > 0).flatMap(mp1 =>
+ MetaphoneAlgorithm.compute(ca2).filter(_.length > 0).map(mp1.sameElements(_))
+ )
}
override def compare(string1: String, string2: String)
diff --git a/core/source/core/scala/org/hashtree/stringmetric/phonetic/NysiisMetric.scala b/core/source/core/scala/org/hashtree/stringmetric/phonetic/NysiisMetric.scala
index 46f53d1..279ec82 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/phonetic/NysiisMetric.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/phonetic/NysiisMetric.scala
@@ -21,13 +21,9 @@ object NysiisMetric extends StringMetric with FilterableStringMetric {
if (ca1.length == 0 || !Alphabet.is(ca1.head) || ca2.length == 0 || !Alphabet.is(ca2.head)) None
else if (unequal(ca1.head, ca2.head)) Some(false)
- else {
- val ny1 = NysiisAlgorithm.compute(ca1)
- lazy val ny2 = NysiisAlgorithm.compute(ca2)
-
- if (!ny1.isDefined || ny1.get.length == 0 || !ny2.isDefined || ny2.get.length == 0) None
- else Some(ny1.get.sameElements(ny2.get))
- }
+ else NysiisAlgorithm.compute(ca1).filter(_.length > 0).flatMap(ny1 =>
+ NysiisAlgorithm.compute(ca2).filter(_.length > 0).map(ny1.sameElements(_))
+ )
}
override def compare(string1: String, string2: String)
diff --git a/core/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetric.scala b/core/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetric.scala
index 10d7bc0..8d688ce 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetric.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedNysiisMetric.scala
@@ -21,13 +21,9 @@ object RefinedNysiisMetric extends StringMetric with FilterableStringMetric {
if (ca1.length == 0 || !Alphabet.is(ca1.head) || ca2.length == 0 || !Alphabet.is(ca2.head)) None
else if (unequal(ca1.head, ca2.head)) Some(false)
- else {
- val rny1 = RefinedNysiisAlgorithm.compute(ca1)
- lazy val rny2 = RefinedNysiisAlgorithm.compute(ca2)
-
- if (!rny1.isDefined || rny1.get.length == 0 || !rny2.isDefined || rny2.get.length == 0) None
- else Some(rny1.get.sameElements(rny2.get))
- }
+ else RefinedNysiisAlgorithm.compute(ca1).filter(_.length > 0).flatMap(rny1 =>
+ RefinedNysiisAlgorithm.compute(ca2).filter(_.length > 0).map(rny1.sameElements(_))
+ )
}
override def compare(string1: String, string2: String)
diff --git a/core/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetric.scala b/core/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetric.scala
index 778c9d2..89ebb1d 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetric.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/phonetic/RefinedSoundexMetric.scala
@@ -15,13 +15,9 @@ object RefinedSoundexMetric extends StringMetric with FilterableStringMetric {
if (ca1.length == 0 || !Alphabet.is(ca1.head) || ca2.length == 0 || !Alphabet.is(ca2.head)) None
else if (ca1.head.toLower != ca2.head.toLower) Some(false)
- else {
- val rse1 = RefinedSoundexAlgorithm.compute(ca1)
- lazy val rse2 = RefinedSoundexAlgorithm.compute(ca2)
-
- if (!rse1.isDefined || rse1.get.length == 0 || !rse2.isDefined || rse2.get.length == 0) None
- else Some(rse1.get.sameElements(rse2.get))
- }
+ else RefinedSoundexAlgorithm.compute(ca1).filter(_.length > 0).flatMap(rse1 =>
+ RefinedSoundexAlgorithm.compute(ca2).filter(_.length > 0).map(rse1.sameElements(_))
+ )
}
override def compare(string1: String, string2: String)
diff --git a/core/source/core/scala/org/hashtree/stringmetric/phonetic/SoundexMetric.scala b/core/source/core/scala/org/hashtree/stringmetric/phonetic/SoundexMetric.scala
index e405688..d446730 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/phonetic/SoundexMetric.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/phonetic/SoundexMetric.scala
@@ -15,13 +15,9 @@ object SoundexMetric extends StringMetric with FilterableStringMetric {
if (ca1.length == 0 || !Alphabet.is(ca1.head) || ca2.length == 0 || !Alphabet.is(ca2.head)) None
else if (ca1.head.toLower != ca2.head.toLower) Some(false)
- else {
- val se1 = SoundexAlgorithm.compute(ca1)
- lazy val se2 = SoundexAlgorithm.compute(ca2)
-
- if (!se1.isDefined || se1.get.length == 0 || !se2.isDefined || se2.get.length == 0) None
- else Some(se1.get.sameElements(se2.get))
- }
+ else SoundexAlgorithm.compute(ca1).filter(_.length > 0).flatMap(se1 =>
+ SoundexAlgorithm.compute(ca2).filter(_.length > 0).map(se1.sameElements(_))
+ )
}
override def compare(string1: String, string2: String)
diff --git a/core/source/core/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetric.scala b/core/source/core/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetric.scala
index 2fed038..513b5ed 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetric.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/similarity/DiceSorensenMetric.scala
@@ -20,17 +20,14 @@ object DiceSorensenMetric extends StringMetric with FilterableConfigurableString
if (ca1.length < n || ca2.length < n) None // Because length is less than n, it is not possible to compare.
else if (ca1.sameElements(ca2)) Some(1d)
- else {
- val ca1bg = NGramAlgorithm.compute(ca1)(n)
- lazy val ca2bg = NGramAlgorithm.compute(ca2)(n)
+ else
+ NGramAlgorithm.compute(ca1)(n).flatMap { ca1bg =>
+ NGramAlgorithm.compute(ca2)(n).map { ca2bg =>
+ val ms = scoreMatches((ca1bg.map(_.mkString), ca2bg.map(_.mkString)))
- if (!ca1bg.isDefined || !ca2bg.isDefined) None
- else {
- val ms = scoreMatches((ca1bg.get.map(_.mkString), ca2bg.get.map(_.mkString)))
-
- Some((2d * ms) / (ca1bg.get.length + ca2bg.get.length))
+ (2d * ms) / (ca1bg.length + ca2bg.length)
+ }
}
- }
}
override def compare(string1: String, string2: String)(n: Int)
diff --git a/core/source/core/scala/org/hashtree/stringmetric/similarity/NGramMetric.scala b/core/source/core/scala/org/hashtree/stringmetric/similarity/NGramMetric.scala
index 4fe581c..0932b0a 100755
--- a/core/source/core/scala/org/hashtree/stringmetric/similarity/NGramMetric.scala
+++ b/core/source/core/scala/org/hashtree/stringmetric/similarity/NGramMetric.scala
@@ -19,14 +19,12 @@ object NGramMetric extends StringMetric with FilterableConfigurableStringMetric[
if (ca1.length < n || ca2.length < n) None // Because length is less than n, it is not possible to compare.
else if (ca1.sameElements(ca2)) Some(1d)
else {
- val ca1bg = NGramAlgorithm.compute(ca1)(n)
- lazy val ca2bg = NGramAlgorithm.compute(ca2)(n)
+ NGramAlgorithm.compute(ca1)(n).flatMap { ca1bg =>
+ NGramAlgorithm.compute(ca2)(n).map { ca2bg =>
+ val ms = scoreMatches((ca1bg.map(_.mkString), ca2bg.map(_.mkString)))
- if (!ca1bg.isDefined || !ca2bg.isDefined) None
- else {
- val ms = scoreMatches((ca1bg.get.map(_.mkString), ca2bg.get.map(_.mkString)))
-
- Some(ms.toDouble / math.max(ca1bg.get.length, ca2bg.get.length))
+ ms.toDouble / math.max(ca1bg.length, ca2bg.length)
+ }
}
}
}