aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2018-04-29 13:59:54 -0700
committerJakob Odersky <jakob@odersky.com>2018-04-29 13:59:54 -0700
commit4562b1b5754f4b840016be345eb6ee92f5abf258 (patch)
tree2fdc03ccd75039b3f68b4b7c50d42f8790f412d1
parentcecdb1476341ed4160ac95a0736fbbe58a187a27 (diff)
downloadcommando-4562b1b5754f4b840016be345eb6ee92f5abf258.tar.gz
commando-4562b1b5754f4b840016be345eb6ee92f5abf258.tar.bz2
commando-4562b1b5754f4b840016be345eb6ee92f5abf258.zip
Rename parameters and commands
-rw-r--r--src/main/scala/definitions.scala26
-rw-r--r--src/main/scala/parsing.scala4
-rw-r--r--src/test/scala/CmdTest.scala20
3 files changed, 24 insertions, 26 deletions
diff --git a/src/main/scala/definitions.scala b/src/main/scala/definitions.scala
index cb05532..b009e41 100644
--- a/src/main/scala/definitions.scala
+++ b/src/main/scala/definitions.scala
@@ -1,12 +1,10 @@
package commando
-import scala.{Option => Maybe}
-
sealed trait Definition
-case class Option(long: String,
- short: Maybe[Char] = None,
- parameter: Maybe[Parameter] = None)
+case class Optional(long: String,
+ short: Option[Char] = None,
+ parameter: Option[Positional] = None)
extends Definition {
def argumentAllowed: Boolean = parameter.isDefined
def argumentRequired: Boolean = parameter.map(_.required).getOrElse(false)
@@ -14,14 +12,14 @@ case class Option(long: String,
val shortString = short.map(c => s"-$c|").getOrElse("")
val argString = parameter match {
case None => ""
- case Some(Parameter(argName, false)) => s"[=<$argName>]"
- case Some(Parameter(argName, true)) => s"=<$argName>"
+ case Some(Positional(argName, false)) => s"[=<$argName>]"
+ case Some(Positional(argName, true)) => s"=<$argName>"
}
s"[$shortString--$long$argString]"
}
}
-case class Parameter(
+case class Positional(
name: String,
required: Boolean = true
) extends Definition {
@@ -29,10 +27,10 @@ case class Parameter(
}
case class Command(
- name: String,
- options: Set[Option] = Set.empty,
- parameters: Seq[Parameter] = Seq.empty,
- commands: Set[Command] = Set.empty
+ name: String,
+ options: Set[Optional] = Set.empty,
+ parameters: Seq[Positional] = Seq.empty,
+ commands: Set[Command] = Set.empty
) extends Definition {
override def toString = name
@@ -64,8 +62,8 @@ object Command {
def apply(name: String, defs: Definition*): Command = {
Command(
name,
- options = defs.collect { case opt: Option => opt }.toSet,
- parameters = defs.collect { case param: Parameter => param }.toSeq,
+ options = defs.collect { case opt: Optional => opt }.toSet,
+ parameters = defs.collect { case param: Positional => param }.toSeq,
commands = defs.collect { case cmd: Command => cmd }.toSet
)
}
diff --git a/src/main/scala/parsing.scala b/src/main/scala/parsing.scala
index 44a8872..31880fa 100644
--- a/src/main/scala/parsing.scala
+++ b/src/main/scala/parsing.scala
@@ -71,10 +71,10 @@ object Parser {
}
def line(command: Command): CommandLine = {
- val longs: Map[String, Option] = command.options.map {
+ val longs: Map[String, Optional] = command.options.map {
case opt => opt.long -> opt
}.toMap
- val shorts: Map[String, Option] = command.options.collect {
+ val shorts: Map[String, Optional] = command.options.collect {
case opt if opt.short.isDefined => opt.short.get.toString -> opt
}.toMap
val subcommands: Map[String, Command] = command.commands.map {
diff --git a/src/test/scala/CmdTest.scala b/src/test/scala/CmdTest.scala
index 7370010..f78611d 100644
--- a/src/test/scala/CmdTest.scala
+++ b/src/test/scala/CmdTest.scala
@@ -6,22 +6,22 @@ object CmdTests extends TestSuite {
val cbx = commando.Command(
"cbx",
- commando.Option("server", Some('s'), Some(commando.Parameter("name"))),
+ commando.Optional("server", Some('s'), Some(commando.Positional("name"))),
commando.Command(
"version",
- commando.Option("verbose", Some('v'), Some(commando.Parameter("k=v", false)))),
+ commando.Optional("verbose", Some('v'), Some(commando.Positional("k=v", false)))),
commando.Command("login",
- commando.Parameter("server_url"),
- commando.Parameter("username", false),
- commando.Parameter("password", false)),
+ commando.Positional("server_url"),
+ commando.Positional("username", false),
+ commando.Positional("password", false)),
commando.Command("run",
- commando.Option("file", Some('f'), Some(commando.Parameter("file_name"))),
- commando.Option("force", None),
- commando.Parameter("pipeline", false)),
+ commando.Optional("file", Some('f'), Some(commando.Positional("file_name"))),
+ commando.Optional("force", None),
+ commando.Positional("pipeline", false)),
commando.Command("level1",
commando.Command("level2-1",
- commando.Parameter("p2"),
- commando.Command("level3", commando.Parameter("p3"))),
+ commando.Positional("p2"),
+ commando.Command("level3", commando.Positional("p3"))),
commando.Command("level2-2"))
)