/- Copyright (c) 2021 Henrik Böving. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Henrik Böving -/ import Lean import DocGen4.Output.ToHtmlFormat import DocGen4.Output.Base namespace DocGen4 namespace Output open Lean open scoped DocGen4.Jsx def moduleListFile (file : Name) : BaseHtmlM Html := do pure
{←moduleToHtmlLink file}
/-- Build the HTML tree representing the module hierarchy. -/ partial def moduleListDir (h : Hierarchy) : BaseHtmlM Html := do let children := Array.mk (h.getChildren.toList.map Prod.snd) let dirs := children.filter (λ c => c.getChildren.toList.length != 0) let files := children.filter (λ c => Hierarchy.isFile c ∧ c.getChildren.toList.length = 0) |>.map Hierarchy.getName let dirNodes ← (dirs.mapM moduleListDir) let fileNodes ← (files.mapM moduleListFile) let moduleLink ← moduleNameToLink h.getName let summary := if h.isFile then {←moduleToHtmlLink h.getName} else {h.getName.toString} pure /-- Return a list of top level modules, linkified and rendered as HTML -/ def moduleList : BaseHtmlM Html := do let hierarchy ← getHierarchy let mut list := Array.empty for (_, cs) in hierarchy.getChildren do list := list.push $ ←moduleListDir cs pure
[list]
/-- The main entry point to rendering the navbar on the left hand side. -/ def navbar : BaseHtmlM Html := do pure [←baseHtmlHeadDeclarations] end Output end DocGen4