bookshelf-doc/DocGen4/Output/Inductive.lean

40 lines
1.1 KiB
Plaintext
Raw Normal View History

import DocGen4.Output.Template
2022-02-17 05:47:38 +00:00
import DocGen4.Output.DocString
import DocGen4.Process
namespace DocGen4
namespace Output
open scoped DocGen4.Jsx
2022-07-23 13:40:08 +00:00
open Lean
2022-11-20 11:48:16 +00:00
def instancesForToHtml (typeName : Name) : BaseHtmlM Html := do
2022-07-23 13:40:08 +00:00
pure
2023-11-24 12:40:20 +00:00
<details id={s!"instances-for-list-{typeName}"} «class»="instances-for-list">
2022-07-23 13:40:08 +00:00
<summary>Instances For</summary>
2023-11-24 12:40:20 +00:00
<ul class="instances-for-enum"></ul>
2022-07-23 13:40:08 +00:00
</details>
def ctorToHtml (c : Process.NameInfo) : HtmlM Html := do
2022-10-20 17:51:26 +00:00
let shortName := c.name.componentsRev.head!.toString
let name := c.name.toString
if let some doc := c.doc then
let renderedDoc ← docStringToHtml doc
pure
<li class="constructor" id={name}>
2023-01-01 18:51:01 +00:00
{shortName} : [← infoFormatToHtml c.type]
2023-08-18 07:40:27 +00:00
<div class="inductive_ctor_doc">[renderedDoc]</div>
</li>
else
pure
<li class="constructor" id={name}>
2023-01-01 18:51:01 +00:00
{shortName} : [← infoFormatToHtml c.type]
</li>
def inductiveToHtml (i : Process.InductiveInfo) : HtmlM (Array Html) := do
2022-05-19 15:16:40 +00:00
let constructorsHtml := <ul class="constructors">[← i.ctors.toArray.mapM ctorToHtml]</ul>
2023-01-01 18:51:01 +00:00
return #[constructorsHtml]
end Output
end DocGen4