aboutsummaryrefslogtreecommitdiff
path: root/doc-tool/src/dotty/tools/dottydoc/staticsite/DefaultParams.scala
diff options
context:
space:
mode:
Diffstat (limited to 'doc-tool/src/dotty/tools/dottydoc/staticsite/DefaultParams.scala')
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/staticsite/DefaultParams.scala41
1 files changed, 39 insertions, 2 deletions
diff --git a/doc-tool/src/dotty/tools/dottydoc/staticsite/DefaultParams.scala b/doc-tool/src/dotty/tools/dottydoc/staticsite/DefaultParams.scala
index d64ebcd90..5bed79869 100644
--- a/doc-tool/src/dotty/tools/dottydoc/staticsite/DefaultParams.scala
+++ b/doc-tool/src/dotty/tools/dottydoc/staticsite/DefaultParams.scala
@@ -2,17 +2,19 @@ package dotty.tools
package dottydoc
package staticsite
-import java.util.{ List => JList }
import model.{ Entity, NonEntity }
+import java.util.{ HashMap, List => JList, Map => JMap }
+import scala.collection.JavaConverters._
+
case class DefaultParams(
docs: JList[_],
page: PageInfo,
site: SiteInfo,
+ sidebar: Sidebar,
entity: Entity = NonEntity
) {
import model.java._
- import scala.collection.JavaConverters._
def toMap: Map[String, AnyRef] = Map(
"docs" -> docs,
@@ -29,6 +31,8 @@ case class DefaultParams(
"project" -> site.projectTitle
).asJava,
+ "sidebar" -> sidebar.titles.asJava,
+
"entity" -> entity.asJava()
)
@@ -48,3 +52,36 @@ case class PageInfo(url: String, date: String = "") {
}
case class SiteInfo(baseurl: String, projectTitle: String, posts: Array[BlogPost])
+
+case class Sidebar(titles: List[Title])
+
+object Sidebar {
+ def apply(map: HashMap[String, AnyRef]): Option[Sidebar] = Option(map.get("sidebar")).map {
+ case list: JList[JMap[String, AnyRef]] @unchecked if !list.isEmpty =>
+ new Sidebar(list.asScala.map(Title.apply).flatMap(x => x).toList)
+ case _ => Sidebar.empty
+ }
+
+ def empty: Sidebar = Sidebar(Nil)
+}
+
+case class Title(title: String, url: Option[String], subsection: List[Title])
+
+object Title {
+ def apply(map: JMap[String, AnyRef]): Option[Title] = {
+ val title = Option(map.get("title")).collect {
+ case s: String => s
+ }
+ val url = Option(map.get("url")).collect {
+ case s: String => s
+ }
+ val subsection = Option(map.get("subsection")).collect {
+ case xs: JList[JMap[String, AnyRef]] @unchecked =>
+ xs.asScala.map(Title.apply).toList.flatMap(x => x)
+ }.getOrElse(Nil)
+
+ title.map {
+ case title: String => Title(title, url, subsection)
+ }
+ }
+}