diff --git a/go.mod b/go.mod index 7ac7a84b..dc1eb81d 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/hashicorp/terraform-json v0.25.0 github.com/mattn/go-colorable v0.1.14 github.com/rogpeppe/go-internal v1.14.1 - github.com/yuin/goldmark v1.7.12 + github.com/yuin/goldmark v1.7.7 github.com/yuin/goldmark-meta v1.1.0 github.com/zclconf/go-cty v1.16.3 go.abhg.dev/goldmark/frontmatter v0.2.0 diff --git a/go.sum b/go.sum index 7953d842..47226692 100644 --- a/go.sum +++ b/go.sum @@ -128,8 +128,8 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark v1.7.12 h1:YwGP/rrea2/CnCtUHgjuolG/PnMxdQtPMO5PvaE2/nY= -github.com/yuin/goldmark v1.7.12/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= +github.com/yuin/goldmark v1.7.7 h1:5m9rrB1sW3JUMToKFQfb+FGt1U7r57IHu5GrYrG2nqU= +github.com/yuin/goldmark v1.7.7/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk= diff --git a/internal/mdplain/renderer.go b/internal/mdplain/renderer.go index bd6c9e11..93bd5ec7 100644 --- a/internal/mdplain/renderer.go +++ b/internal/mdplain/renderer.go @@ -26,51 +26,59 @@ func (r *TextRender) Render(w io.Writer, source []byte, n ast.Node) error { } switch node := node.(type) { - case *ast.Blockquote, *ast.CodeSpan: - return ast.WalkContinue, nil - case *ast.Heading, *ast.CodeBlock, *ast.List: + case *ast.Blockquote, *ast.Heading: doubleSpace(out) - return ast.WalkContinue, nil + out.Write(node.Text(source)) + return ast.WalkSkipChildren, nil case *ast.ThematicBreak: doubleSpace(out) return ast.WalkSkipChildren, nil + case *ast.CodeBlock: + doubleSpace(out) + for i := 0; i < node.Lines().Len(); i++ { + line := node.Lines().At(i) + out.Write(line.Value(source)) + } + return ast.WalkSkipChildren, nil case *ast.FencedCodeBlock: doubleSpace(out) doubleSpace(out) - out.Write(node.Lines().Value(source)) + for i := 0; i < node.Lines().Len(); i++ { + line := node.Lines().At(i) + _, _ = out.Write(line.Value(source)) + } + return ast.WalkSkipChildren, nil + case *ast.List: + doubleSpace(out) return ast.WalkContinue, nil case *ast.Paragraph: doubleSpace(out) - if node.Lines().Value(source)[0] == '|' { // Write tables as-is. - out.Write(node.Lines().Value(source)) + if node.Text(source)[0] == '|' { // Write tables as-is. + for i := 0; i < node.Lines().Len(); i++ { + line := node.Lines().At(i) + out.Write(line.Value(source)) + } return ast.WalkSkipChildren, nil } return ast.WalkContinue, nil case *extAST.Strikethrough: - out.Write(node.Lines().Value(source)) + out.Write(node.Text(source)) return ast.WalkContinue, nil case *ast.AutoLink: out.Write(node.URL(source)) return ast.WalkSkipChildren, nil + case *ast.CodeSpan: + out.Write(node.Text(source)) + return ast.WalkSkipChildren, nil case *ast.Link: - // we want to write the text of the - // link before the url - child := node.FirstChild() - if child != nil { - t, ok := child.(*ast.Text) - if ok { - out.Write(t.Value(source)) - } - } - + _, err := out.Write(node.Text(source)) if !isRelativeLink(node.Destination) { out.WriteString(" ") out.Write(node.Destination) } - - return ast.WalkSkipChildren, nil + return ast.WalkSkipChildren, err case *ast.Text: - out.Write(node.Value(source)) + out.Write(node.Text(source)) if node.SoftLineBreak() { doubleSpace(out) } diff --git a/internal/provider/migrate.go b/internal/provider/migrate.go index 68314c2a..9abd7734 100644 --- a/internal/provider/migrate.go +++ b/internal/provider/migrate.go @@ -296,7 +296,7 @@ func (m *migrator) ExtractCodeExamples(content []byte, newRelDir string, templat if fencedNode, isFenced := node.(*ast.FencedCodeBlock); isFenced && fencedNode.Info != nil { var ext, exampleName, examplePath, template string - lang := string(fencedNode.Info.Value(content)[:]) + lang := string(fencedNode.Info.Text(content)[:]) switch lang { case "hcl", "terraform": exampleCount++