summaryrefslogtreecommitdiff
path: root/cask/src/cask/router/Misc.scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2019-09-16 08:58:31 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2019-09-16 08:58:31 +0800
commit583893aff7e39e085dbf5bec27c9b0b24e5e8d2e (patch)
treeb2cf94c9bef2824159d8c9bd4f4867163a6ef36c /cask/src/cask/router/Misc.scala
parent4851f249c8124ce725576f4f87f097f16e2f3843 (diff)
downloadcask-583893aff7e39e085dbf5bec27c9b0b24e5e8d2e.tar.gz
cask-583893aff7e39e085dbf5bec27c9b0b24e5e8d2e.tar.bz2
cask-583893aff7e39e085dbf5bec27c9b0b24e5e8d2e.zip
Break up `Router.scala` into a `router/` folder with multiple files
Diffstat (limited to 'cask/src/cask/router/Misc.scala')
-rw-r--r--cask/src/cask/router/Misc.scala23
1 files changed, 23 insertions, 0 deletions
diff --git a/cask/src/cask/router/Misc.scala b/cask/src/cask/router/Misc.scala
new file mode 100644
index 0000000..438ec43
--- /dev/null
+++ b/cask/src/cask/router/Misc.scala
@@ -0,0 +1,23 @@
+package cask.router
+
+import scala.annotation.StaticAnnotation
+
+
+class doc(s: String) extends StaticAnnotation
+
+/**
+ * Models what is known by the router about a single argument: that it has
+ * a [[name]], a human-readable [[typeString]] describing what the type is
+ * (just for logging and reading, not a replacement for a `TypeTag`) and
+ * possible a function that can compute its default value
+ */
+case class ArgSig[I, -T, +V, -C](name: String,
+ typeString: String,
+ doc: Option[String],
+ default: Option[T => V])
+ (implicit val reads: ArgReader[I, V, C])
+
+trait ArgReader[I, +T, -C]{
+ def arity: Int
+ def read(ctx: C, label: String, input: I): T
+}