aboutsummaryrefslogtreecommitdiff
path: root/doc-tool/src/dotty/tools/dottydoc/staticsite/MapOperations.scala
diff options
context:
space:
mode:
Diffstat (limited to 'doc-tool/src/dotty/tools/dottydoc/staticsite/MapOperations.scala')
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/staticsite/MapOperations.scala25
1 files changed, 25 insertions, 0 deletions
diff --git a/doc-tool/src/dotty/tools/dottydoc/staticsite/MapOperations.scala b/doc-tool/src/dotty/tools/dottydoc/staticsite/MapOperations.scala
new file mode 100644
index 000000000..9dd88cb67
--- /dev/null
+++ b/doc-tool/src/dotty/tools/dottydoc/staticsite/MapOperations.scala
@@ -0,0 +1,25 @@
+package dotty.tools
+package dottydoc
+package staticsite
+
+import java.util.{ List => JList, Map => JMap }
+
+/** A simple wrapper for Maps to impose a certain degree of typesafety */
+object MapOperations {
+ implicit class SaferMap(val map: Map[String, AnyRef]) extends AnyVal {
+ // `AnyRef` is actually `String | JList[String]`
+ def getString(str: String): Option[String] = map.get(str).flatMap {
+ case res: String => Some(res)
+ case _ => None
+ }
+
+ def getList(str: String): Option[JList[String]] = map.get(str).flatMap {
+ case res: JList[String] @unchecked => Some(res)
+ case _ => None
+ }
+
+ def string(str: String): String = getString(str).getOrElse("")
+ def list(str: String): JList[String] = getList(str).getOrElse(new java.util.ArrayList[String])
+ }
+}
+