diff options
| author | Jack Koenig | 2020-11-11 13:13:54 -0800 |
|---|---|---|
| committer | GitHub | 2020-11-11 21:13:54 +0000 |
| commit | e6192ea75ce0d840b4b51a376921c2feecaa3b46 (patch) | |
| tree | 31b1b50cca00cbc4c0e30d0fd52e0cd4a4a55c37 /docs-target | |
| parent | 9f1d6cbb79ac9b9f9e2cad5f294ca5d195aeac14 (diff) | |
Add custom mdoc modifier for emitted Verilog (#1666)
Diffstat (limited to 'docs-target')
| -rw-r--r-- | docs-target/src/main/resources/META-INF/services/mdoc.PostModifier | 1 | ||||
| -rw-r--r-- | docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala | 34 |
2 files changed, 35 insertions, 0 deletions
diff --git a/docs-target/src/main/resources/META-INF/services/mdoc.PostModifier b/docs-target/src/main/resources/META-INF/services/mdoc.PostModifier new file mode 100644 index 00000000..9c0bd9bb --- /dev/null +++ b/docs-target/src/main/resources/META-INF/services/mdoc.PostModifier @@ -0,0 +1 @@ +chisel3.docs.VerilogMdocModifier diff --git a/docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala b/docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala new file mode 100644 index 00000000..a76e412a --- /dev/null +++ b/docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala @@ -0,0 +1,34 @@ +package chisel3.docs + +import java.nio.file.Files +import java.nio.file.Paths +import mdoc._ +import scala.meta.inputs.Position + +/** Custom modifier for rendering Chisel-generated Verilog + * + * See chisel3/docs/README.md for use + */ +class VerilogMdocModifier extends PostModifier { + val name = "verilog" + def process(ctx: PostModifierContext): String = { + val result = + ctx.variables.foldLeft(Option("")) { + case (Some(acc), variable) if variable.staticType == "String" => + Some(acc + variable.runtimeValue) + case (Some(_), badVar) => + ctx.reporter.error( + badVar.pos, + s"""type mismatch: + |expected: String + |received: ${badVar.runtimeValue}""".stripMargin + ) + None + case (None, _) => None + } + result match { + case Some(content) => s"```verilog\n$content```" + case None => "" + } + } +} |
