summaryrefslogtreecommitdiff
path: root/docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala
diff options
context:
space:
mode:
authorJack Koenig2020-11-11 13:13:54 -0800
committerGitHub2020-11-11 21:13:54 +0000
commite6192ea75ce0d840b4b51a376921c2feecaa3b46 (patch)
tree31b1b50cca00cbc4c0e30d0fd52e0cd4a4a55c37 /docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala
parent9f1d6cbb79ac9b9f9e2cad5f294ca5d195aeac14 (diff)
Add custom mdoc modifier for emitted Verilog (#1666)
Diffstat (limited to 'docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala')
-rw-r--r--docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala34
1 files changed, 34 insertions, 0 deletions
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 => ""
+ }
+ }
+}