diff options
author | Rocky Madden <git@rockymadden.com> | 2013-03-15 23:36:50 -0600 |
---|---|---|
committer | Rocky Madden <git@rockymadden.com> | 2013-03-15 23:36:50 -0600 |
commit | bf647570705de2023784641251bf80b9c8a23113 (patch) | |
tree | 96fe61fb9f5d49974d8e7b8970f66b120ba5e6bf /cli | |
parent | 7083b01e4aaf0bb3263c8ecfe92e5f66bca13f63 (diff) | |
download | stringmetric-bf647570705de2023784641251bf80b9c8a23113.tar.gz stringmetric-bf647570705de2023784641251bf80b9c8a23113.tar.bz2 stringmetric-bf647570705de2023784641251bf80b9c8a23113.zip |
Removed optionmap types.
Diffstat (limited to 'cli')
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 +} |