fix: adapt the rest of the program to the process refactor

main
Henrik Böving 2022-05-20 00:36:43 +02:00
parent b58b1b315b
commit d519ef6b58
11 changed files with 24 additions and 17 deletions

View File

@ -37,10 +37,10 @@ def lakeSetup (imports : List String) : IO (Except UInt32 (Lake.Workspace × Str
Load a list of modules from the current Lean search path into an `Environment` Load a list of modules from the current Lean search path into an `Environment`
to process for documentation. to process for documentation.
-/ -/
def load (imports : List Name) : IO AnalyzerResult := do def load (imports : List Name) : IO Process.AnalyzerResult := do
let env ← importModules (List.map (Import.mk · false) imports) Options.empty let env ← importModules (List.map (Import.mk · false) imports) Options.empty
-- TODO parameterize maxHeartbeats -- TODO parameterize maxHeartbeats
IO.println "Processing modules" IO.println "Processing modules"
Prod.fst <$> Meta.MetaM.toIO process { maxHeartbeats := 100000000, options := ⟨[(`pp.tagAppFns, true)]⟩ } { env := env} {} {} Prod.fst <$> Meta.MetaM.toIO Process.process { maxHeartbeats := 100000000, options := ⟨[(`pp.tagAppFns, true)]⟩ } { env := env} {} {}
end DocGen4 end DocGen4

View File

@ -16,7 +16,7 @@ import DocGen4.Output.SourceLinker
namespace DocGen4 namespace DocGen4
open Lean IO System Output open Lean IO System Output Process
/-- /--
The main entrypoint for outputting the documentation HTML based on an The main entrypoint for outputting the documentation HTML based on an

View File

@ -10,7 +10,7 @@ import DocGen4.Output.ToHtmlFormat
namespace DocGen4.Output namespace DocGen4.Output
open scoped DocGen4.Jsx open scoped DocGen4.Jsx
open Lean System Widget Elab open Lean System Widget Elab Process
/-- /--
The context used in the `HtmlM` monad for HTML templating. The context used in the `HtmlM` monad for HTML templating.

View File

@ -1,5 +1,6 @@
import DocGen4.Output.Template import DocGen4.Output.Template
import DocGen4.Output.Structure import DocGen4.Output.Structure
import DocGen4.Process
namespace DocGen4 namespace DocGen4
namespace Output namespace Output
@ -20,7 +21,7 @@ def classInstancesToHtml (instances : Array Name) : HtmlM Html := do
</ul> </ul>
</details> </details>
def classToHtml (i : ClassInfo) : HtmlM (Array Html) := do def classToHtml (i : Process.ClassInfo) : HtmlM (Array Html) := do
pure $ (←structureToHtml i.toStructureInfo) pure $ (←structureToHtml i.toStructureInfo)
end Output end Output

View File

@ -1,12 +1,13 @@
import DocGen4.Output.Template import DocGen4.Output.Template
import DocGen4.Output.Class import DocGen4.Output.Class
import DocGen4.Output.Inductive import DocGen4.Output.Inductive
import DocGen4.Process
namespace DocGen4 namespace DocGen4
namespace Output namespace Output
def classInductiveToHtml (i : ClassInductiveInfo) : HtmlM (Array Html) := do def classInductiveToHtml (i : Process.ClassInductiveInfo) : HtmlM (Array Html) := do
pure $ (←inductiveToHtml i.toInductiveInfo) pure $ (←inductiveToHtml i.toInductiveInfo)
end Output end Output

View File

@ -1,5 +1,6 @@
import DocGen4.Output.Template import DocGen4.Output.Template
import DocGen4.Output.DocString import DocGen4.Output.DocString
import DocGen4.Process
namespace DocGen4 namespace DocGen4
namespace Output namespace Output
@ -19,7 +20,7 @@ defined in `equationLimit` we stop trying since they:
- are too ugly to read most of the time - are too ugly to read most of the time
- take too long - take too long
-/ -/
def equationsToHtml (i : DefinitionInfo) : HtmlM (Array Html) := do def equationsToHtml (i : Process.DefinitionInfo) : HtmlM (Array Html) := do
if let some eqs := i.equations then if let some eqs := i.equations then
let equationsHtml ← eqs.mapM equationToHtml let equationsHtml ← eqs.mapM equationToHtml
let filteredEquationsHtml := equationsHtml.filter (λ eq => eq.textLength < equationLimit) let filteredEquationsHtml := equationsHtml.filter (λ eq => eq.textLength < equationLimit)

View File

@ -3,7 +3,7 @@ import DocGen4.Output.Template
import Lean.Data.Parsec import Lean.Data.Parsec
import Unicode.General.GeneralCategory import Unicode.General.GeneralCategory
open Lean Unicode Xml Parser Parsec open Lean Unicode Xml Parser Parsec DocGen4.Process
namespace DocGen4 namespace DocGen4
namespace Output namespace Output

View File

@ -1,17 +1,18 @@
import DocGen4.Output.Template import DocGen4.Output.Template
import DocGen4.Output.DocString import DocGen4.Output.DocString
import DocGen4.Process
namespace DocGen4 namespace DocGen4
namespace Output namespace Output
open scoped DocGen4.Jsx open scoped DocGen4.Jsx
def ctorToHtml (i : NameInfo) : HtmlM Html := do def ctorToHtml (i : Process.NameInfo) : HtmlM Html := do
let shortName := i.name.components'.head!.toString let shortName := i.name.components'.head!.toString
let name := i.name.toString let name := i.name.toString
pure <li class="constructor" id={name}>{shortName} : [←infoFormatToHtml i.type]</li> pure <li class="constructor" id={name}>{shortName} : [←infoFormatToHtml i.type]</li>
def inductiveToHtml (i : InductiveInfo) : HtmlM (Array Html) := do def inductiveToHtml (i : Process.InductiveInfo) : HtmlM (Array Html) := do
let constructorsHtml := <ul class="constructors">[← i.ctors.toArray.mapM ctorToHtml]</ul> let constructorsHtml := <ul class="constructors">[← i.ctors.toArray.mapM ctorToHtml]</ul>
pure #[constructorsHtml] pure #[constructorsHtml]

View File

@ -11,13 +11,14 @@ import DocGen4.Output.Definition
import DocGen4.Output.Instance import DocGen4.Output.Instance
import DocGen4.Output.ClassInductive import DocGen4.Output.ClassInductive
import DocGen4.Output.DocString import DocGen4.Output.DocString
import DocGen4.Process
import Lean.Data.Xml.Parser import Lean.Data.Xml.Parser
namespace DocGen4 namespace DocGen4
namespace Output namespace Output
open scoped DocGen4.Jsx open scoped DocGen4.Jsx
open Lean open Lean Process
/-- /--
Render an `Arg` as HTML, adding opacity effects etc. depending on what Render an `Arg` as HTML, adding opacity effects etc. depending on what
@ -45,7 +46,7 @@ def argToHtml (arg : Arg) : HtmlM Html := do
Render the structures this structure extends from as HTML so it can be Render the structures this structure extends from as HTML so it can be
added to the top level. added to the top level.
-/ -/
def structureInfoHeader (s : StructureInfo) : HtmlM (Array Html) := do def structureInfoHeader (s : Process.StructureInfo) : HtmlM (Array Html) := do
let mut nodes := #[] let mut nodes := #[]
if s.parents.size > 0 then if s.parents.size > 0 then
nodes := nodes.push <span class="decl_extends">extends</span> nodes := nodes.push <span class="decl_extends">extends</span>
@ -222,10 +223,10 @@ def internalNav (members : Array Name) (moduleName : Name) : HtmlM Html := do
/-- /--
The main entry point to rendering the HTML for an entire module. The main entry point to rendering the HTML for an entire module.
-/ -/
def moduleToHtml (module : Module) : HtmlM Html := withReader (setCurrentName module.name) do def moduleToHtml (module : Process.Module) : HtmlM Html := withReader (setCurrentName module.name) do
let memberDocs ← module.members.mapM (λ i => moduleMemberToHtml module.name i) let memberDocs ← module.members.mapM (λ i => moduleMemberToHtml module.name i)
let memberNames := filterMapDocInfo module.members |>.map DocInfo.getName let memberNames := filterMapDocInfo module.members |>.map DocInfo.getName
templateExtends (baseHtmlArray module.name.toString) $ pure #[ templateExtends (baseHtmlGenerator module.name.toString) $ pure #[
←internalNav memberNames module.name, ←internalNav memberNames module.name,
Html.element "main" false #[] memberDocs Html.element "main" false #[] memberDocs
] ]

View File

@ -1,8 +1,9 @@
import DocGen4.Output.Template import DocGen4.Output.Template
import DocGen4.Output.DocString import DocGen4.Output.DocString
import DocGen4.Process
import Lean.Data.Xml import Lean.Data.Xml
open Lean Xml open Lean Xml DocGen4.Process
namespace DocGen4 namespace DocGen4
namespace Output namespace Output

View File

@ -1,5 +1,6 @@
import DocGen4.Output.Template import DocGen4.Output.Template
import DocGen4.Output.DocString import DocGen4.Output.DocString
import DocGen4.Process
namespace DocGen4 namespace DocGen4
namespace Output namespace Output
@ -10,7 +11,7 @@ open Lean
/-- /--
Render a single field consisting of its documentation, its name and its type as HTML. Render a single field consisting of its documentation, its name and its type as HTML.
-/ -/
def fieldToHtml (f : NameInfo) : HtmlM Html := do def fieldToHtml (f : Process.NameInfo) : HtmlM Html := do
let shortName := f.name.components'.head!.toString let shortName := f.name.components'.head!.toString
let name := f.name.toString let name := f.name.toString
if let some doc := f.doc then if let some doc := f.doc then
@ -29,7 +30,7 @@ def fieldToHtml (f : NameInfo) : HtmlM Html := do
/-- /--
Render all information about a structure as HTML. Render all information about a structure as HTML.
-/ -/
def structureToHtml (i : StructureInfo) : HtmlM (Array Html) := do def structureToHtml (i : Process.StructureInfo) : HtmlM (Array Html) := do
let structureHtml := let structureHtml :=
if Name.isSuffixOf `mk i.ctor.name then if Name.isSuffixOf `mk i.ctor.name then
(<ul class="structure_fields" id={i.ctor.name.toString}> (<ul class="structure_fields" id={i.ctor.name.toString}>