Skip to content

Commit 24f049d

Browse files
committed
Fix regression of renderer
1 parent b3ef6a6 commit 24f049d

File tree

1 file changed

+34
-24
lines changed

1 file changed

+34
-24
lines changed

modules/markup/renderer.go

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ type RenderContext struct {
4848
type Renderer interface {
4949
Name() string // markup format name
5050
Extensions() []string
51+
NeedPostProcess() bool
5152
Render(ctx *RenderContext, input io.Reader, output io.Writer) error
5253
}
5354

@@ -94,7 +95,7 @@ func RenderString(ctx *RenderContext, content string) (string, error) {
9495
return buf.String(), nil
9596
}
9697

97-
func render(ctx *RenderContext, parser Renderer, input io.Reader, output io.Writer) error {
98+
func render(ctx *RenderContext, renderer Renderer, input io.Reader, output io.Writer) error {
9899
var wg sync.WaitGroup
99100
var err error
100101
pr, pw := io.Pipe()
@@ -103,29 +104,38 @@ func render(ctx *RenderContext, parser Renderer, input io.Reader, output io.Writ
103104
_ = pw.Close()
104105
}()
105106

106-
pr2, pw2 := io.Pipe()
107-
defer func() {
108-
_ = pr2.Close()
109-
_ = pw2.Close()
110-
}()
111-
112-
wg.Add(1)
113-
go func() {
114-
buf := SanitizeReader(pr2)
115-
_, err = io.Copy(output, buf)
116-
_ = pr2.Close()
117-
wg.Done()
118-
}()
119-
120-
wg.Add(1)
121-
go func() {
122-
err = PostProcess(ctx, pr, pw2)
123-
_ = pr.Close()
124-
_ = pw2.Close()
125-
wg.Done()
126-
}()
127-
128-
if err1 := parser.Render(ctx, input, pw); err1 != nil {
107+
if renderer.NeedPostProcess() {
108+
pr2, pw2 := io.Pipe()
109+
defer func() {
110+
_ = pr2.Close()
111+
_ = pw2.Close()
112+
}()
113+
114+
wg.Add(1)
115+
go func() {
116+
buf := SanitizeReader(pr2)
117+
_, err = io.Copy(output, buf)
118+
_ = pr2.Close()
119+
wg.Done()
120+
}()
121+
122+
wg.Add(1)
123+
go func() {
124+
err = PostProcess(ctx, pr, pw2)
125+
_ = pr.Close()
126+
_ = pw2.Close()
127+
wg.Done()
128+
}()
129+
} else {
130+
wg.Add(1)
131+
go func() {
132+
buf := SanitizeReader(pr)
133+
_, err = io.Copy(output, buf)
134+
_ = pr.Close()
135+
wg.Done()
136+
}()
137+
}
138+
if err1 := renderer.Render(ctx, input, pw); err1 != nil {
129139
return err1
130140
}
131141
_ = pw.Close()

0 commit comments

Comments
 (0)