@@ -48,6 +48,7 @@ type RenderContext struct {
4848type 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