diff options
Diffstat (limited to 'doc-tool/src/dotty/tools/dottydoc/staticsite/MapOperations.scala')
-rw-r--r-- | doc-tool/src/dotty/tools/dottydoc/staticsite/MapOperations.scala | 25 |
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]) + } +} + |