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