This PR adds the option `doc.verso.module`. If set, it controls whether module docstrings use Verso syntax. If not set, it defaults to the value of the `doc.verso` option. Closes #12070.
55 lines
1.8 KiB
Text
55 lines
1.8 KiB
Text
/-
|
|
Tests that when `doc.verso.module` is not explicitly set,
|
|
module docs fall back to the value of `doc.verso`.
|
|
-/
|
|
import Lean
|
|
|
|
-- Only set doc.verso, do not set doc.verso.module
|
|
set_option doc.verso true
|
|
|
|
/-!
|
|
Module docs should parse as Verso here (fallback from {option}`doc.verso`).
|
|
|
|
*Bold* and _italic_ and [link](example.com)
|
|
-/
|
|
|
|
open Lean Elab Term in
|
|
/--
|
|
info: Markdown:
|
|
Verso:
|
|
{ text := #[Lean.Doc.Block.para
|
|
#[Lean.Doc.Inline.text "Module docs should parse as Verso here (fallback from ",
|
|
Lean.Doc.Inline.other
|
|
{ name := `Lean.Doc.Data.Option val := Dynamic.mk `Lean.Doc.Data.Option _ }
|
|
#[Lean.Doc.Inline.code "doc.verso"],
|
|
Lean.Doc.Inline.text ")."],
|
|
Lean.Doc.Block.para
|
|
#[Lean.Doc.Inline.bold #[Lean.Doc.Inline.text "Bold"], Lean.Doc.Inline.text " and ",
|
|
Lean.Doc.Inline.emph #[Lean.Doc.Inline.text "italic"], Lean.Doc.Inline.text " and ",
|
|
Lean.Doc.Inline.link #[Lean.Doc.Inline.text "link"] "example.com", Lean.Doc.Inline.linebreak "\n"]],
|
|
sections := #[],
|
|
declarationRange := { pos := { line := 10, column := 0 },
|
|
charUtf16 := 0,
|
|
endPos := { line := 14, column := 2 },
|
|
endCharUtf16 := 2 } }
|
|
-/
|
|
#guard_msgs in
|
|
#eval show TermElabM Unit from do
|
|
IO.println "Markdown:"
|
|
for modDoc in (Lean.getMainModuleDoc (← getEnv)).toArray do
|
|
IO.println modDoc.doc
|
|
IO.println "Verso:"
|
|
for modDoc in (Lean.getMainVersoModuleDocs (← getEnv)).snippets do
|
|
IO.println <| repr modDoc
|
|
|
|
|
|
/--
|
|
{name}`fallbackDecl`
|
|
-/
|
|
def fallbackDecl := "hello"
|
|
|
|
open Lean Elab Command Term in
|
|
/-- info: `fallbackDecl` -/
|
|
#guard_msgs in
|
|
#eval show TermElabM Unit from do
|
|
(← findDocString? (← getEnv) ``fallbackDecl).forM (IO.println ·)
|