From 80f0e3b1764c1c5d4ad8c059731b6eb179d6ece6 Mon Sep 17 00:00:00 2001 From: Asaf Gartner Date: Sun, 26 Dec 2021 11:36:12 +0200 Subject: [PATCH] MD text renderer: handle backslashes Handles the same characters as the html renderer. --- src/parsing/renderer.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/parsing/renderer.go b/src/parsing/renderer.go index 6340457..c42df28 100644 --- a/src/parsing/renderer.go +++ b/src/parsing/renderer.go @@ -2,6 +2,7 @@ package parsing import ( "io" + "regexp" "github.com/yuin/goldmark/ast" "github.com/yuin/goldmark/renderer" @@ -11,6 +12,8 @@ type plaintextRenderer struct{} var _ renderer.Renderer = plaintextRenderer{} +var backslashRegex = regexp.MustCompile("\\\\(?P[\\\\\\x60!\"#$%&'()*+,-./:;<=>?@\\[\\]^_{|}~])") + func (r plaintextRenderer) Render(w io.Writer, source []byte, n ast.Node) error { return ast.Walk(n, func(n ast.Node, entering bool) (ast.WalkStatus, error) { if !entering { @@ -20,8 +23,7 @@ func (r plaintextRenderer) Render(w io.Writer, source []byte, n ast.Node) error switch n.Kind() { case ast.KindText: n := n.(*ast.Text) - - _, err := w.Write(n.Text(source)) + _, err := w.Write(backslashRegex.ReplaceAll(n.Text(source), []byte("$1"))) if err != nil { return ast.WalkContinue, err }