summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRocky Madden <git@rockymadden.com>2014-01-07 12:54:09 -0700
committerRocky Madden <git@rockymadden.com>2014-01-07 12:54:09 -0700
commit0890131e88dad54e13dfda85e4e60ffb9e3d8df5 (patch)
tree4b70ae550ce5623af8e1feb75dba168833da7f77
parent27dfe9cbec09b3affb8ce01d8774004c3677dd9a (diff)
downloadstringmetric-0890131e88dad54e13dfda85e4e60ffb9e3d8df5.tar.gz
stringmetric-0890131e88dad54e13dfda85e4e60ffb9e3d8df5.tar.bz2
stringmetric-0890131e88dad54e13dfda85e4e60ffb9e3d8df5.zip
Implicit clean up.
-rwxr-xr-xcli/src/main/scala/com/rockymadden/stringmetric/cli/package.scala28
-rwxr-xr-xcli/src/test/scala/com/rockymadden/stringmetric/cli/PackageSpec.scala20
2 files changed, 23 insertions, 25 deletions
diff --git a/cli/src/main/scala/com/rockymadden/stringmetric/cli/package.scala b/cli/src/main/scala/com/rockymadden/stringmetric/cli/package.scala
index 8292d02..ac47462 100755
--- a/cli/src/main/scala/com/rockymadden/stringmetric/cli/package.scala
+++ b/cli/src/main/scala/com/rockymadden/stringmetric/cli/package.scala
@@ -1,16 +1,14 @@
package com.rockymadden.stringmetric
-/**
- * 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.
- */
+
+// 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 {
import scala.language.implicitConversions
implicit def optionStringToArray(os: OptionString): Array[String] =
- if (os.get.length == 0) Array.empty[String]
- else os.get.split(" ")
+ if (os.get.length == 0) Array.empty[String] else os.get.split(" ")
implicit def optionStringToBigDecimal(os: OptionString): BigDecimal = BigDecimal(os.get)
implicit def optionStringToBigInt(os: OptionString): BigInt = BigInt(os.get)
implicit def optionStringToDouble(os: OptionString): Double = os.get.toDouble
@@ -19,27 +17,29 @@ package object cli {
implicit def optionStringToLong(os: OptionString): Long = os.get.toLong
implicit def optionStringToShort(os: OptionString): Short = os.get.toShort
implicit def optionStringToString(os: OptionString): String = os.get
- implicit def stringToOptionString(s: String): OptionString = OptionString(s)
- implicit def arrayOfStringToOptionMap(stringArray: Array[String]): OptionMap = OptionMap(stringArray)
- final val Ls = sys.props("line.separator")
- final val Tab = " "
+ val Ls = sys.props("line.separator")
+ val Tab = " "
class OptionString(val get: String)
+
object OptionString {
+ implicit def fromString(s: String): OptionString = OptionString(s)
+
def apply(s: String): OptionString = new OptionString(s)
}
type OptionMap = Map[Symbol, OptionString]
+
object OptionMap {
- def apply(args: Array[String]): OptionMap = apply(args: _*)
+ def apply(as: Array[String]): OptionMap = apply(as: _*)
- def apply(varargs: String*): OptionMap = {
+ def apply(as: String*): OptionMap = {
@annotation.tailrec
def next(om: OptionMap, a: List[String]): OptionMap = {
val double = """^(--[a-zA-Z0-9]+)(=[a-zA-Z0-9\.\-_]+)?""".r
@@ -67,7 +67,7 @@ package object cli {
}
}
- next(Map.empty[Symbol, OptionString], varargs.toList)
+ next(Map.empty[Symbol, OptionString], as.toList)
}
}
@@ -78,7 +78,7 @@ package object cli {
protected val execute: (OptionMap => String)
) {
def main(args: Array[String]): Unit = {
- val opts: OptionMap = args
+ val opts = OptionMap(args)
try
if (opts.contains('h) || opts.contains('help)) {
diff --git a/cli/src/test/scala/com/rockymadden/stringmetric/cli/PackageSpec.scala b/cli/src/test/scala/com/rockymadden/stringmetric/cli/PackageSpec.scala
index ac31a4d..44550dc 100755
--- a/cli/src/test/scala/com/rockymadden/stringmetric/cli/PackageSpec.scala
+++ b/cli/src/test/scala/com/rockymadden/stringmetric/cli/PackageSpec.scala
@@ -3,51 +3,49 @@ package com.rockymadden.stringmetric.cli
object PackageSpec extends org.specs2.mutable.SpecificationWithJUnit {
"OptionMap apply()" should {
"return populated Map with single valid double dashed option" in {
- val opts: OptionMap = Array("--help")
+ val opts = OptionMap("--help")
(opts('help): String) must beEqualTo("")
}
"return populated Map with multiple valid double dashed opts" in {
- val opts: OptionMap = Array("--help", "--test=test")
+ val opts = OptionMap("--help", "--test=test")
(opts('help): String) must beEqualTo("")
(opts('test): String) must beEqualTo("test")
}
"return empty Map with invalid double dashed opts" in {
- val opts: OptionMap = Array("--help#", "--test%=test")
+ val opts = OptionMap("--help#", "--test%=test")
opts.keysIterator.length must beEqualTo(0)
}
"return populated Map with single valid single dashed option" in {
- val opts: OptionMap = Array("-h")
+ val opts = OptionMap("-h")
(opts('h): String) must beEqualTo("")
}
"return populated Map multiple valid single dashed opts" in {
- val opts: OptionMap = Array("-h", "-i")
+ val opts = OptionMap("-h", "-i")
(opts('h): String) must beEqualTo("")
(opts('i): String) must beEqualTo("")
}
"return empty Map with invalid single dashed opts" in {
- val opts: OptionMap = Array("-h-i", "-i#gloo")
+ val opts = OptionMap("-h-i", "-i#gloo")
opts.keysIterator.length must beEqualTo(0)
}
"return single key populated Map with single nameless option" in {
- val opts: OptionMap = Array("filename0")
+ val opts = OptionMap("filename0")
(opts('dashless): String).count(_ == ' ') must beEqualTo(0)
}
"return single key populated Map with multiple single nameless opts" in {
- val opts: OptionMap = Array("filename0", "filename1", "filename2")
+ val opts = OptionMap("filename0", "filename1", "filename2")
(opts('dashless): String).count(_ == ' ') must beEqualTo(2)
}
"return populated Map with mixed opts" in {
- val opts: OptionMap = Array(
- "-q", "--help", "--test=test", "-go", "filename0", "filename1", "filename2"
- )
+ val opts = OptionMap("-q", "--help", "--test=test", "-go", "filename0", "filename1", "filename2")
(opts('q): String) must beEqualTo("")
(opts('help): String) must beEqualTo("")