Files
gps/dependencies/chisel/docs-target/src/main/scala/chisel3/docs/VerilogMdocModifier.scala
T
2026-07-12 11:01:51 +03:00

35 lines
934 B
Scala

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```\n"
case None => ""
}
}
}