35 lines
934 B
Scala
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 => ""
|
|
}
|
|
}
|
|
}
|