summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
authorRocky Madden <git@rockymadden.com>2013-03-15 23:36:50 -0600
committerRocky Madden <git@rockymadden.com>2013-03-15 23:36:50 -0600
commitbf647570705de2023784641251bf80b9c8a23113 (patch)
tree96fe61fb9f5d49974d8e7b8970f66b120ba5e6bf /cli
parent7083b01e4aaf0bb3263c8ecfe92e5f66bca13f63 (diff)
downloadstringmetric-bf647570705de2023784641251bf80b9c8a23113.tar.gz
stringmetric-bf647570705de2023784641251bf80b9c8a23113.tar.bz2
stringmetric-bf647570705de2023784641251bf80b9c8a23113.zip
Removed optionmap types.
Diffstat (limited to 'cli')
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMap.scala26
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMapType.scala83
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/OptionString.scala30
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/package.scala8
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneAlgorithm.scala22
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneMetric.scala22
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisAlgorithm.scala8
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisMetric.scala22
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisAlgorithm.scala22
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisMetric.scala10
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexAlgorithm.scala22
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexMetric.scala10
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexAlgorithm.scala22
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexMetric.scala10
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/diceSorensenMetric.scala26
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/hammingMetric.scala10
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaccardMetric.scala26
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroMetric.scala10
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroWinklerMetric.scala22
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinMetric.scala10
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithm.scala38
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramMetric.scala14
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/overlapMetric.scala26
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/ratcliffObershelpMetric.scala22
-rwxr-xr-xcli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/weightedLevenshteinMetric.scala36
-rwxr-xr-xcli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapSpec.scala62
-rwxr-xr-xcli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapTypeSpec.scala231
-rwxr-xr-xcli/source/test/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithmSpec.scala2
28 files changed, 269 insertions, 583 deletions
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMap.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMap.scala
index ede8a5c..79aea0b 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMap.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMap.scala
@@ -8,33 +8,31 @@ object OptionMap {
def apply(varargs: String*): OptionMap = {
@tailrec
def next(om: OptionMap, a: List[String]): OptionMap = {
- val double = """^(--[a-zA-Z0-9]+)(\=[a-zA-Z0-9\.\-\_]+)?""".r
- val single = """^(-[a-zA-Z0-9]+)(\=[a-zA-Z0-9\.\-\_]+)?""".r
- val less = """([a-zA-Z0-9\/\-\_\$\.]+)""".r
+ val double = """^(--[a-zA-Z0-9]+)(=[a-zA-Z0-9\.\-_]+)?""".r
+ val single = """^(-[a-zA-Z0-9]+)(=[a-zA-Z0-9\.\-_]+)?""".r
+ val less = """([a-zA-Z0-9/\-_\$\.]+)""".r
a match {
// Empty, return.
case Nil => om
- // Double dash options, without value.
+ // Double dash options without value.
case double(k, null) :: t => next(om + (Symbol(k.tail.tail) -> ""), t)
- // Double dash options, with value.
+ // Double dash options with value.
case double(k, v) :: t => next(om + (Symbol(k.tail.tail) -> v.tail), t)
- // Single dash options, without value.
+ // Single dash options without value.
case single(k, null) :: t => next(om + (Symbol(k.tail) -> ""), t)
- // Single dash options, with value. Value is discarded.
+ // Single dash options with value. Value is discarded.
case single(k, v) :: t => next(om + (Symbol(k.tail) -> ""), t)
// Dashless options.
case less(v) :: t if v.head != '-' =>
- if (om.contains('dashless)) {
- val dashless = om('dashless) + " " + v.trim
-
- next((om - 'dashless) + ('dashless -> dashless), t)
- } else next(om + ('dashless -> v.trim), t)
+ if (om.contains('dashless))
+ next((om - 'dashless) + ('dashless -> (om('dashless).self + " " + v.trim)), t)
+ else next(om + ('dashless -> v.trim), t)
// Invalid option, ignore.
case _ :: t => next(om, t)
}
}
- next(Map.empty[Symbol, String], varargs.toList)
+ next(Map.empty[Symbol, OptionString], varargs.toList)
}
-} \ No newline at end of file
+}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMapType.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMapType.scala
deleted file mode 100755
index 7298905..0000000
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionMapType.scala
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.rockymadden.stringmetric.cli
-
-import scala.language.implicitConversions
-
-sealed abstract class OptionMapType[T](protected[this] val stringSelf: String) {
- def parse: T
-}
-
-final case class OptionMapArray(arrayString: String) extends OptionMapType[Array[String]](arrayString) {
- private[this] lazy val self = if (stringSelf.length == 0) Array.empty[String] else stringSelf.split(" ")
-
- override def parse = self
-}
-
-final case class OptionMapBigDecimal(bigDecimalString: String) extends OptionMapType[BigDecimal](bigDecimalString) {
- private[this] lazy val self = BigDecimal(stringSelf)
-
- override def parse = self
-}
-
-final case class OptionMapBigInt(bigIntString: String) extends OptionMapType[BigInt](bigIntString) {
- private[this] lazy val self = BigInt(stringSelf)
-
- override def parse = self
-}
-
-final case class OptionMapDouble(doubleString: String) extends OptionMapType[Double](doubleString) {
- private[this] lazy val self = stringSelf.toDouble
-
- override def parse = self
-}
-
-final case class OptionMapFloat(floatString: String) extends OptionMapType[Float](floatString) {
- private[this] lazy val self = stringSelf.toFloat
-
- override def parse = self
-}
-
-final case class OptionMapInt(intString: String) extends OptionMapType[Int](intString) {
- private[this] lazy val self = stringSelf.toInt
-
- override def parse = self
-}
-
-final case class OptionMapList(listString: String) extends OptionMapType[List[String]](listString) {
- private[this] lazy val self = if (stringSelf.length == 0) List.empty[String] else stringSelf.split(" ").toList
-
- override def parse = self
-}
-
-final case class OptionMapLong(longString: String) extends OptionMapType[Long](longString) {
- private[this] lazy val self = stringSelf.toLong
-
- override def parse = self
-}
-
-final case class OptionMapShort(shortString: String) extends OptionMapType[Short](shortString) {
- private[this] lazy val self = stringSelf.toShort
-
- override def parse = self
-}
-
-object OptionMapType {
- implicit def OptionMapTypeToT[T](optionMapType: OptionMapType[T]): T = optionMapType.parse
-
- implicit def StringToOptionMapArray(string: String): OptionMapArray = new OptionMapArray(string)
-
- implicit def StringToOptionMapBigDecimal(string: String): OptionMapBigDecimal = new OptionMapBigDecimal(string)
-
- implicit def StringToOptionMapBigInt(string: String): OptionMapBigInt = new OptionMapBigInt(string)
-
- implicit def StringToOptionMapDouble(string: String): OptionMapDouble = new OptionMapDouble(string)
-
- implicit def StringToOptionMapFloat(string: String): OptionMapFloat = new OptionMapFloat(string)
-
- implicit def StringToOptionMapInt(string: String): OptionMapInt = new OptionMapInt(string)
-
- implicit def StringToOptionMapList(string: String): OptionMapList = new OptionMapList(string)
-
- implicit def StringToOptionMapLong(string: String): OptionMapLong = new OptionMapLong(string)
-
- implicit def StringToOptionMapShort(string: String): OptionMapShort = new OptionMapShort(string)
-}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionString.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionString.scala
new file mode 100755
index 0000000..7a1350d
--- /dev/null
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/OptionString.scala
@@ -0,0 +1,30 @@
+package com.rockymadden.stringmetric.cli
+
+import scala.language.implicitConversions
+
+class OptionString(val self: String)
+
+object OptionString {
+ implicit def OptionStringToArray(optionString: OptionString): Array[String] =
+ if (optionString.self.length == 0) Array.empty[String] else optionString.self.split(" ")
+
+ implicit def OptionStringToBigDecimal(optionString: OptionString): BigDecimal = BigDecimal(optionString.self)
+
+ implicit def OptionStringToBigInt(optionString: OptionString): BigInt = BigInt(optionString.self)
+
+ implicit def OptionStringToDouble(optionString: OptionString): Double = optionString.self.toDouble
+
+ implicit def OptionStringToFloat(optionString: OptionString): Float = optionString.self.toFloat
+
+ implicit def OptionStringToInt(optionString: OptionString): Int = optionString.self.toInt
+
+ implicit def OptionStringToLong(optionString: OptionString): Long = optionString.self.toLong
+
+ implicit def OptionStringToShort(optionString: OptionString): Short = optionString.self.toShort
+
+ implicit def OptionStringToString(optionString: OptionString): String = optionString.self
+
+ implicit def StringToOptionString(string: String): OptionString = apply(string)
+
+ def apply(string: String): OptionString = new OptionString(string)
+}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/package.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/package.scala
index 0a44f9a..cbaba97 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/package.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/package.scala
@@ -1,9 +1,13 @@
package com.rockymadden.stringmetric
+import scala.language.implicitConversions
+
/**
* Provides core CLI functionality. Note that some things might look sloppy (e.g. access modifiers, broad imports,
* repetitive imports, etc), but are required because of the way scalascript is ultimately compiled.
*/
package object cli {
- type OptionMap = Map[Symbol, String]
-} \ No newline at end of file
+ type OptionMap = Map[Symbol, OptionString]
+
+ implicit def StringArrayToOptionMap(stringArray: Array[String]): OptionMap = OptionMap(stringArray)
+}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneAlgorithm.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneAlgorithm.scala
index 8ef925b..ed2207e 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneAlgorithm.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneAlgorithm.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.MetaphoneAlgorithm
*/
object metaphoneAlgorithm extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 1) {
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 1) {
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -34,10 +32,10 @@ object metaphoneAlgorithm extends Command {
tab + "metaphoneAlgorithm [Options] string..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
+ tab + tab + "Outputs description, syntax, and opts."
)
}
- override def execute(options: OptionMap): Unit =
- println(MetaphoneAlgorithm.compute(options('dashless)).getOrElse("not computable"))
+ override def execute(opts: OptionMap): Unit =
+ println(MetaphoneAlgorithm.compute(opts('dashless)).getOrElse("not computable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneMetric.scala
index d3cd7f0..13e98ae 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/metaphoneMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.MetaphoneMetric
*/
object metaphoneMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 2) {
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -34,12 +32,12 @@ object metaphoneMetric extends Command {
tab + "metaphoneMetric [Options] string1 string2..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
+ tab + tab + "Outputs description, syntax, and opts."
)
}
- override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ override def execute(opts: OptionMap): Unit = {
+ val strings: Array[String] = opts('dashless)
println(MetaphoneMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisAlgorithm.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisAlgorithm.scala
index 33a9d82..107fdc5 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisAlgorithm.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisAlgorithm.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.NysiisAlgorithm
*/
object nysiisAlgorithm extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val options: OptionMap = args
try
if (options.contains('h) || options.contains('help)) {
help()
exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 1) {
+ } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 1) {
execute(options)
exit(options)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, options) }
}
override def help(): Unit = {
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisMetric.scala
index f051bed..15bf46e 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/nysiisMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.NysiisMetric
*/
object nysiisMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 2) {
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -34,12 +32,12 @@ object nysiisMetric extends Command {
tab + "nysiisMetric [Options] string1 string2..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
+ tab + tab + "Outputs description, syntax, and opts."
)
}
- override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ override def execute(opts: OptionMap): Unit = {
+ val strings: Array[String] = opts('dashless)
println(NysiisMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisAlgorithm.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisAlgorithm.scala
index a2a18e4..be6db95 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisAlgorithm.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisAlgorithm.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.RefinedNysiisAlgorithm
*/
object refinedNysiisAlgorithm extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 1) {
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 1) {
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -34,10 +32,10 @@ object refinedNysiisAlgorithm extends Command {
tab + "refinedNysiisAlgorithm [Options] string..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
+ tab + tab + "Outputs description, syntax, and opts."
)
}
- override def execute(options: OptionMap): Unit =
- println(RefinedNysiisAlgorithm.compute(options('dashless)).getOrElse("not computable"))
+ override def execute(opts: OptionMap): Unit =
+ println(RefinedNysiisAlgorithm.compute(opts('dashless)).getOrElse("not computable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisMetric.scala
index 00a078e..60d6a0b 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedNysiisMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.RefinedNysiisMetric
*/
object refinedNysiisMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val options: OptionMap = args
try
if (options.contains('h) || options.contains('help)) {
help()
exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
+ } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 2) {
execute(options)
exit(options)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, options) }
}
override def help(): Unit = {
@@ -39,7 +37,7 @@ object refinedNysiisMetric extends Command {
}
override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ val strings: Array[String] = options('dashless)
println(RefinedNysiisMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexAlgorithm.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexAlgorithm.scala
index 3fe6ed3..2f6813a 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexAlgorithm.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexAlgorithm.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.RefinedSoundexAlgorithm
*/
object refinedSoundexAlgorithm extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 1) {
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 1) {
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -34,10 +32,10 @@ object refinedSoundexAlgorithm extends Command {
tab + "refinedSoundexAlgorithm [Options] string..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
+ tab + tab + "Outputs description, syntax, and opts."
)
}
- override def execute(options: OptionMap): Unit =
- println(RefinedSoundexAlgorithm.compute(options('dashless)).getOrElse("not computable"))
+ override def execute(opts: OptionMap): Unit =
+ println(RefinedSoundexAlgorithm.compute(opts('dashless)).getOrElse("not computable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexMetric.scala
index 2a0dbf5..72ebe80 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/refinedSoundexMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.RefinedSoundexMetric
*/
object refinedSoundexMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val options: OptionMap = args
try
if (options.contains('h) || options.contains('help)) {
help()
exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
+ } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 2) {
execute(options)
exit(options)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, options) }
}
override def help(): Unit = {
@@ -39,7 +37,7 @@ object refinedSoundexMetric extends Command {
}
override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ val strings: Array[String] = options('dashless)
println(RefinedSoundexMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexAlgorithm.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexAlgorithm.scala
index 45e78d3..93e0dad 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexAlgorithm.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexAlgorithm.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.SoundexAlgorithm
*/
object soundexAlgorithm extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 1) {
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 1) {
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -34,10 +32,10 @@ object soundexAlgorithm extends Command {
tab + "soundexAlgorithm [Options] string..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
+ tab + tab + "Outputs description, syntax, and opts."
)
}
- override def execute(options: OptionMap): Unit =
- println(SoundexAlgorithm.compute(options('dashless)).getOrElse("not computable"))
+ override def execute(opts: OptionMap): Unit =
+ println(SoundexAlgorithm.compute(opts('dashless)).getOrElse("not computable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexMetric.scala
index 9e6c21d..5b727e1 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/phonetic/soundexMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.phonetic.SoundexMetric
*/
object soundexMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val options: OptionMap = args
try
if (options.contains('h) || options.contains('help)) {
help()
exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
+ } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 2) {
execute(options)
exit(options)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, options) }
}
override def help(): Unit = {
@@ -39,7 +37,7 @@ object soundexMetric extends Command {
}
override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ val strings: Array[String] = options('dashless)
println(SoundexMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/diceSorensenMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/diceSorensenMetric.scala
index e0d3f80..a97e6f4 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/diceSorensenMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/diceSorensenMetric.scala
@@ -9,21 +9,19 @@ import com.rockymadden.stringmetric.similarity.DiceSorensenMetric
*/
object diceSorensenMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2
- && options.contains('n) && (options('n): OptionMapInt) >= 1) {
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 2
+ && opts.contains('n) && (opts('n): Int) >= 1) {
- execute(options)
- exit(options)
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -36,15 +34,15 @@ object diceSorensenMetric extends Command {
tab + "diceSorensenMetric [Options] string1 string2..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options." +
+ tab + tab + "Outputs description, syntax, and opts." +
tab + "--n" + ls +
tab + tab + "The n-gram size, traditionally 2."
)
}
- override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
- val n: OptionMapInt = options('n)
+ override def execute(opts: OptionMap): Unit = {
+ val strings: Array[String] = opts('dashless)
+ val n: Int = opts('n)
println(DiceSorensenMetric.compare(strings(0), strings(1))(n).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/hammingMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/hammingMetric.scala
index c5373d2..740ed15 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/hammingMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/hammingMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.similarity.HammingMetric
*/
object hammingMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val options: OptionMap = args
try
if (options.contains('h) || options.contains('help)) {
help()
exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
+ } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 2) {
execute(options)
exit(options)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, options) }
}
override def help(): Unit = {
@@ -39,7 +37,7 @@ object hammingMetric extends Command {
}
override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ val strings: Array[String] = options('dashless)
println(HammingMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaccardMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaccardMetric.scala
index b7aa9c7..be68f89 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaccardMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaccardMetric.scala
@@ -9,21 +9,19 @@ import com.rockymadden.stringmetric.similarity.JaccardMetric
*/
object jaccardMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2
- && options.contains('n) && (options('n): OptionMapInt) >= 1) {
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 2
+ && opts.contains('n) && (opts('n): Int) >= 1) {
- execute(options)
- exit(options)
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -36,15 +34,15 @@ object jaccardMetric extends Command {
tab + "jaccardMetric [Options] string1 string2..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options." +
+ tab + tab + "Outputs description, syntax, and opts." +
tab + "--n" + ls +
tab + tab + "The n-gram size."
)
}
- override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
- val n: OptionMapInt = options('n)
+ override def execute(opts: OptionMap): Unit = {
+ val strings: Array[String] = opts('dashless)
+ val n: Int = opts('n)
println(JaccardMetric.compare(strings(0), strings(1))(n).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroMetric.scala
index 7e54c61..8bfc256 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroMetric.scala
@@ -6,19 +6,17 @@ import com.rockymadden.stringmetric.similarity.JaroMetric
/** The jaroMetric [[com.rockymadden.stringmetric.cli.Command]]. Compares two strings to calculate the Jaro distance. */
object jaroMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val options: OptionMap = args
try
if (options.contains('h) || options.contains('help)) {
help()
exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
+ } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 2) {
execute(options)
exit(options)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, options) }
}
override def help(): Unit = {
@@ -36,7 +34,7 @@ object jaroMetric extends Command {
}
override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ val strings: Array[String] = options('dashless)
println(JaroMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroWinklerMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroWinklerMetric.scala
index 287e6f6..0e5c121 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroWinklerMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/jaroWinklerMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.similarity.JaroWinklerMetric
*/
object jaroWinklerMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 2) {
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -34,12 +32,12 @@ object jaroWinklerMetric extends Command {
tab + "jaroWinklerMetric [Options] string1 string2..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
+ tab + tab + "Outputs description, syntax, and opts."
)
}
- override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ override def execute(opts: OptionMap): Unit = {
+ val strings: Array[String] = opts('dashless)
println(JaroWinklerMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinMetric.scala
index c8e65a5..0af32d7 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/levenshteinMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.similarity.LevenshteinMetric
*/
object levenshteinMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val options: OptionMap = args
try
if (options.contains('h) || options.contains('help)) {
help()
exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
+ } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 2) {
execute(options)
exit(options)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, options) }
}
override def help(): Unit = {
@@ -40,7 +38,7 @@ object levenshteinMetric extends Command {
}
override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ val strings: Array[String] = options('dashless)
println(LevenshteinMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithm.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithm.scala
index f684514..707f7fd 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithm.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithm.scala
@@ -9,21 +9,19 @@ import com.rockymadden.stringmetric.similarity.NGramAlgorithm
*/
object nGramAlgorithm extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 1
- && options.contains('n) && (options('n): OptionMapInt) >= 1) {
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 1
+ && opts.contains('n) && (opts('n): Int) >= 1) {
- execute(options)
- exit(options)
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -36,15 +34,25 @@ object nGramAlgorithm extends Command {
tab + "nGramAlgorithm [Options] string..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options." +
+ tab + tab + "Outputs description, syntax, and opts." +
tab + "--n" + ls +
tab + tab + "The n."
)
}
- override def execute(options: OptionMap): Unit = {
- val n: OptionMapInt = options('n)
+ override def execute(opts: OptionMap): Unit =
+ NGramAlgorithm.compute(opts('dashless))(opts('n)) match {
+ // Implicits a pain here.
+ case Some(c) => {
+ val sb = new StringBuilder
- println(NGramAlgorithm.compute(options('dashless))(n).map(_.mkString("|")).getOrElse("not computable"))
- }
+ Range(0, c.length).foreach { i =>
+ sb.append(c(i))
+ if (i < c.length - 1) sb.append("|")
+ }
+
+ println(sb.result())
+ }
+ case None => println("not computable")
+ }
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramMetric.scala
index 5236dc3..692cce3 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/nGramMetric.scala
@@ -9,21 +9,19 @@ import com.rockymadden.stringmetric.similarity.NGramMetric
*/
object nGramMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val options: OptionMap = args
try
if (options.contains('h) || options.contains('help)) {
help()
exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2
- && options.contains('n) && (options('n): OptionMapInt) >= 1) {
+ } else if (options.contains('dashless) && (options('dashless): Array[String]).length == 2
+ && options.contains('n) && (options('n): Int) >= 1) {
execute(options)
exit(options)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, options) }
}
override def help(): Unit = {
@@ -43,8 +41,8 @@ object nGramMetric extends Command {
}
override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
- val n: OptionMapInt = options('n)
+ val strings: Array[String] = options('dashless)
+ val n: Int = options('n)
println(NGramMetric.compare(strings(0), strings(1))(n).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/overlapMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/overlapMetric.scala
index ebf0aca..f1fe984 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/overlapMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/overlapMetric.scala
@@ -9,21 +9,19 @@ import com.rockymadden.stringmetric.similarity.OverlapMetric
*/
object overlapMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2
- && options.contains('n) && (options('n): OptionMapInt) >= 1) {
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 2
+ && opts.contains('n) && (opts('n): Int) >= 1) {
- execute(options)
- exit(options)
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -36,15 +34,15 @@ object overlapMetric extends Command {
tab + "overlapMetric [Options] string1 string2..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options." +
+ tab + tab + "Outputs description, syntax, and opts." +
tab + "--n" + ls +
tab + tab + "The n-gram size."
)
}
- override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
- val n: OptionMapInt = options('n)
+ override def execute(opts: OptionMap): Unit = {
+ val strings: Array[String] = opts('dashless)
+ val n: Int = opts('n)
println(OverlapMetric.compare(strings(0), strings(1))(n).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/ratcliffObershelpMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/ratcliffObershelpMetric.scala
index c477122..69eb4ca 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/ratcliffObershelpMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/ratcliffObershelpMetric.scala
@@ -9,19 +9,17 @@ import com.rockymadden.stringmetric.similarity.RatcliffObershelpMetric
*/
object ratcliffObershelpMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2) {
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 2) {
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -34,12 +32,12 @@ object ratcliffObershelpMetric extends Command {
tab + "ratcliffObershelpMetric [Options] string1 string2..." + ls + ls +
"Options:" + ls +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options."
+ tab + tab + "Outputs description, syntax, and opts."
)
}
- override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ override def execute(opts: OptionMap): Unit = {
+ val strings: Array[String] = opts('dashless)
println(RatcliffObershelpMetric.compare(strings(0), strings(1)).getOrElse("not comparable"))
}
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/weightedLevenshteinMetric.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/weightedLevenshteinMetric.scala
index 09f83ff..e4284ff 100755
--- a/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/weightedLevenshteinMetric.scala
+++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/similarity/weightedLevenshteinMetric.scala
@@ -11,23 +11,21 @@ import scala.math.BigDecimal
*/
object weightedLevenshteinMetric extends Command {
override def main(args: Array[String]): Unit = {
- val options = OptionMap(args)
+ val opts: OptionMap = args
try
- if (options.contains('h) || options.contains('help)) {
+ if (opts.contains('h) || opts.contains('help)) {
help()
- exit(options)
- } else if (options.contains('dashless) && (options('dashless): OptionMapArray).length == 2
- && options.contains('deleteWeight) && (options('deleteWeight): OptionMapDouble) >= 0
- && options.contains('insertWeight) && (options('insertWeight): OptionMapDouble) >= 0
- && options.contains('substituteWeight) && (options('substituteWeight): OptionMapDouble) >= 0) {
-
- execute(options)
- exit(options)
+ exit(opts)
+ } else if (opts.contains('dashless) && (opts('dashless): Array[String]).length == 2
+ && opts.contains('deleteWeight) && (opts('deleteWeight): Double) >= 0
+ && opts.contains('insertWeight) && (opts('insertWeight): Double) >= 0
+ && opts.contains('substituteWeight) && (opts('substituteWeight): Double) >= 0) {
+
+ execute(opts)
+ exit(opts)
} else throw new IllegalArgumentException("Expected valid syntax. See --help.")
- catch {
- case e: Throwable => error(e, options)
- }
+ catch { case e: Throwable => error(e, opts) }
}
override def help(): Unit = {
@@ -43,7 +41,7 @@ object weightedLevenshteinMetric extends Command {
tab + "--deleteWeight" + ls +
tab + tab + "The weight given to delete operations." +
tab + "-h, --help" + ls +
- tab + tab + "Outputs description, syntax, and options." +
+ tab + tab + "Outputs description, syntax, and opts." +
tab + "--insertWeight" + ls +
tab + tab + "The weight given to insert operations." +
tab + "--substituteWeight" + ls +
@@ -51,12 +49,12 @@ object weightedLevenshteinMetric extends Command {
)
}
- override def execute(options: OptionMap): Unit = {
- val strings: OptionMapArray = options('dashless)
+ override def execute(opts: OptionMap): Unit = {
+ val strings: Array[String] = opts('dashless)
val weights = Tuple3[BigDecimal, BigDecimal, BigDecimal](
- (options('deleteWeight): OptionMapBigDecimal),
- (options('insertWeight): OptionMapBigDecimal),
- (options('substituteWeight): OptionMapBigDecimal)
+ opts('deleteWeight),
+ opts('insertWeight),
+ opts('substituteWeight)
)
println(WeightedLevenshteinMetric.compare(strings(0), strings(1))(weights).getOrElse("not comparable"))
diff --git a/cli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapSpec.scala b/cli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapSpec.scala
index a3a1990..121e2ed 100755
--- a/cli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapSpec.scala
+++ b/cli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapSpec.scala
@@ -10,75 +10,75 @@ final class OptionMapSpec extends ScalaTest {
"apply method" when passed {
"single valid double dashed option" should returns {
"populated Map" in {
- val options = OptionMap("--help")
+ val opts: OptionMap = Array("--help")
- options('help) should equal ("")
+ (opts('help): String) should equal ("")
}
}
- "multiple valid double dashed options" should returns {
+ "multiple valid double dashed opts" should returns {
"populated Map" in {
- val options = OptionMap("--help", "--test=test")
+ val opts: OptionMap = Array("--help", "--test=test")
- options('help) should equal ("")
- options('test) should equal ("test")
+ (opts('help): String) should equal ("")
+ (opts('test): String) should equal ("test")
}
}
- "invalid double dashed options" should returns {
+ "invalid double dashed opts" should returns {
"empty Map" in {
- val options = OptionMap("--help#", "--test%=test")
+ val opts: OptionMap = Array("--help#", "--test%=test")
- options.keysIterator.length should be (0)
+ opts.keysIterator.length should be (0)
}
}
"single valid single dashed option" should returns {
"populated Map" in {
- val options = OptionMap("-h")
+ val opts: OptionMap = Array("-h")
- options('h) should equal ("")
+ (opts('h): String) should equal ("")
}
}
- "multiple valid single dashed options" should returns {
+ "multiple valid single dashed opts" should returns {
"populated Map" in {
- val options = OptionMap("-h", "-i")
+ val opts: OptionMap = Array("-h", "-i")
- options('h) should equal ("")
- options('i) should equal ("")
+ (opts('h): String) should equal ("")
+ (opts('i): String) should equal ("")
}
}
- "invalid single dashed options" should returns {
+ "invalid single dashed opts" should returns {
"empty Map" in {
- val options = OptionMap("-h-i", "-i#gloo")
+ val opts: OptionMap = Array("-h-i", "-i#gloo")
- options.keysIterator.length should be (0)
+ opts.keysIterator.length should be (0)
}
}
"single nameless option" should returns {
"single key populated Map" in {
- val options = OptionMap("filename0")
+ val opts: OptionMap = Array("filename0")
- options('dashless).count(_ == ' ') should be (0)
+ (opts('dashless): String).count(_ == ' ') should be (0)
}
}
- "multiple single nameless options" should returns {
+ "multiple single nameless opts" should returns {
"single key populated Map" in {
- val options = OptionMap("filename0", "filename1", "filename2")
+ val opts: OptionMap = Array("filename0", "filename1", "filename2")
- options('dashless).count(_ == ' ') should be (2)
+ (opts('dashless): String).count(_ == ' ') should be (2)
}
}
- "mixed options" should returns {
+ "mixed opts" should returns {
"populated Map" in {
- val options = OptionMap(
+ val opts: OptionMap = Array(
"-q", "--help", "--test=test", "-go", "filename0", "filename1", "filename2"
)
- options('q) should equal ("")
- options('help) should equal ("")
- options('test) should equal ("test")
- options('go) should equal ("")
- options('dashless).count(_ == ' ') should be (2)
+ (opts('q): String) should equal ("")
+ (opts('help): String) should equal ("")
+ (opts('test): String) should equal ("test")
+ (opts('go): String) should equal ("")
+ (opts('dashless): String).count(_ == ' ') should be (2)
}
}
}
}
-} \ No newline at end of file
+}
diff --git a/cli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapTypeSpec.scala b/cli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapTypeSpec.scala
deleted file mode 100755
index 48510c3..0000000
--- a/cli/source/test/scala/com/rockymadden/stringmetric/cli/OptionMapTypeSpec.scala
+++ /dev/null
@@ -1,231 +0,0 @@
-package com.rockymadden.stringmetric.cli
-
-import com.rockymadden.stringmetric.ScalaTest
-import org.junit.runner.RunWith
-import org.scalatest.junit.JUnitRunner
-
-@RunWith(classOf[JUnitRunner])
-final class OptionMapTypeSpec extends ScalaTest {
- "OptionMapArray" should provide {
- "parse method" when passed {
- "invalid argument" should returns {
- "empty Array" in {
- OptionMapArray("").parse should equal (Array.empty[String])
-
- (OptionMapArray(""): Array[String]) should equal (Array.empty[String])
- }
- }
- "valid argument" should returns {
- "Array" in {
- OptionMapArray("1").parse should equal (Array("1"))
-
- OptionMapArray("1 2 3").parse should equal (Array("1", "2", "3"))
-
- (OptionMapArray("1 2 3"): Array[String]) should equal (Array("1", "2", "3"))
- }
- }
- }
- }
- "OptionMapBigDecimal" should provide {
- "parse method" when passed {
- "invalid argument" should throws {
- "NumberFormatException" in {
- evaluating {
- OptionMapBigDecimal("").parse
- } should produce[NumberFormatException]
-
- evaluating {
- OptionMapBigDecimal("one").parse
- } should produce[NumberFormatException]
-
- evaluating {
- (OptionMapBigDecimal("one"): BigDecimal)
- } should produce[NumberFormatException]
- }
- }
- "valid argument" should returns {
- "BigDecimal" in {
- OptionMapBigDecimal("1").parse should equal (1: BigDecimal)
-
- (OptionMapBigDecimal("1"): BigDecimal) should equal (1: BigDecimal)
- }
- }
- }
- }
- "OptionMapBigInt" should provide {
- "parse method" when passed {
- "invalid argument" should throws {
- "NumberFormatException" in {
- evaluating {
- OptionMapBigInt("").parse
- } should produce[NumberFormatException]
-
- evaluating {
- OptionMapBigInt("one").parse
- } should produce[NumberFormatException]
-
- evaluating {
- (OptionMapBigInt("one"): BigInt)
- } should produce[NumberFormatException]
- }
- }
- "valid argument" should returns {
- "BigInt" in {
- OptionMapBigInt("1").parse should equal (1: BigInt)
-
- (OptionMapBigInt("1"): BigInt) should equal (1: BigInt)
- }
- }
- }
- }
- "OptionMapDouble" should provide {
- "parse method" when passed {
- "invalid argument" should throws {
- "NumberFormatException" in {
- evaluating {
- OptionMapDouble("").parse
- } should produce[NumberFormatException]
-
- evaluating {
- OptionMapDouble("one").parse
- } should produce[NumberFormatException]
-
- evaluating {
- (OptionMapDouble("one"): Double)
- } should produce[NumberFormatException]
- }
- }
- "valid argument" should returns {
- "Double" in {
- OptionMapDouble("1").parse should equal (1d)
-
- (OptionMapDouble("1"): Double) should equal (1d)
- }
- }
- }
- }
- "OptionMapFloat" should provide {
- "parse method" when passed {
- "invalid argument" should throws {
- "NumberFormatException" in {
- evaluating {
- OptionMapFloat("").parse
- } should produce[NumberFormatException]
-
- evaluating {
- OptionMapFloat("one").parse
- } should produce[NumberFormatException]
-
- evaluating {
- (OptionMapFloat("one"): Float)
- } should produce[NumberFormatException]
- }
- }
- "valid argument" should returns {
- "Float" in {
- OptionMapFloat("1").parse should equal (1f)
-
- (OptionMapFloat("1"): Float) should equal (1f)
- }
- }
- }
- }
- "OptionMapInt" should provide {
- "parse method" when passed {
- "invalid argument" should returns {
- "NumberFormatException" in {
- evaluating {
- OptionMapInt("").parse
- } should produce[NumberFormatException]
-
- evaluating {
- OptionMapInt("one").parse
- } should produce[NumberFormatException]
-
- evaluating {
- (OptionMapInt("one"): Int)
- } should produce[NumberFormatException]
- }
- }
- "valid argument" should returns {
- "Int" in {
- OptionMapInt("1").parse should equal (1)
-
- (OptionMapInt("1"): Int) should equal (1)
- }
- }
- }
- }
- "OptionMapList" should provide {
- "parse method" when passed {
- "invalid argument" should returns {
- "empty List" in {
- OptionMapList("").parse should equal (List.empty[String])
-
- (OptionMapList(""): List[String]) should equal (List.empty[String])
- }
- }
- "valid argument" should returns {
- "List" in {
- OptionMapList("1").parse should equal (List("1"))
-
- OptionMapList("1 2 3").parse should equal (List("1", "2", "3"))
-
- (OptionMapList("1 2 3"): List[String]) should equal (List("1", "2", "3"))
- }
- }
- }
- }
- "OptionMapLong" should provide {
- "parse method" when passed {
- "invalid argument" should throws {
- "NumberFormatException" in {
- evaluating {
- OptionMapLong("").parse
- } should produce[NumberFormatException]
-
- evaluating {
- OptionMapLong("one").parse
- } should produce[NumberFormatException]
-
- evaluating {
- (OptionMapLong("one"): Long)
- } should produce[NumberFormatException]
- }
- }
- "valid argument" should returns {
- "Long" in {
- OptionMapLong("1").parse should equal (1l)
-
- (OptionMapLong("1"): Long) should equal (1l)
- }
- }
- }
- }
- "OptionMapShort" should provide {
- "parse method" when passed {
- "invalid argument" should throws {
- "NumberFormatException" in {
- evaluating {
- OptionMapShort("").parse
- } should produce[NumberFormatException]
-
- evaluating {
- OptionMapShort("one").parse
- } should produce[NumberFormatException]
-
- evaluating {
- (OptionMapShort("one"): Short)
- } should produce[NumberFormatException]
- }
- }
- "valid argument" should returns {
- "Short" in {
- OptionMapShort("1").parse should equal (1: Short)
-
- (OptionMapShort("1"): Short) should equal (1: Short)
- }
- }
- }
- }
-}
diff --git a/cli/source/test/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithmSpec.scala b/cli/source/test/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithmSpec.scala
index b68d5bb..55ac2da 100755
--- a/cli/source/test/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithmSpec.scala
+++ b/cli/source/test/scala/com/rockymadden/stringmetric/cli/similarity/nGramAlgorithmSpec.scala
@@ -63,4 +63,4 @@ final class nGramAlgorithmSpec extends ScalaTest {
}
}
}
-} \ No newline at end of file
+}