diff --git a/md/md_renderer.go b/md/md_renderer.go index 4d01a12..d5c8455 100644 --- a/md/md_renderer.go +++ b/md/md_renderer.go @@ -88,7 +88,9 @@ func (r *Renderer) list(w io.Writer, node *ast.List, entering bool) { } } else { r.listDepth-- - fmt.Fprintf(w, "\n") + if _, ok := node.Parent.(*ast.ListItem); !ok { + fmt.Fprintf(w, "\n") + } } } diff --git a/md/md_renderer_test.go b/md/md_renderer_test.go index 8302f1b..eef736e 100644 --- a/md/md_renderer_test.go +++ b/md/md_renderer_test.go @@ -147,7 +147,27 @@ func TestRenderList(t *testing.T) { source = []byte("* aaa\n * aaa1\n * aaa2\n* bbb\n* ccc\n* ddd\n") input = markdown.Parse(source, nil) - expected = "* aaa\n * aaa1\n * aaa2\n\n* bbb\n* ccc\n* ddd\n\n" + expected = "* aaa\n * aaa1\n * aaa2\n* bbb\n* ccc\n* ddd\n\n" + testRendering(t, input, expected) + + source = []byte("* aaa\n * aaa1\n\n") + input = markdown.Parse(source, nil) + expected = "* aaa\n * aaa1\n\n" + testRendering(t, input, expected) + + source = []byte("* aaa\n * aaa1\n * aaa1.1\n\n") + input = markdown.Parse(source, nil) + expected = "* aaa\n * aaa1\n * aaa1.1\n\n" + testRendering(t, input, expected) + + source = []byte("1. aaa\n 1. aaa1\n\n") + input = markdown.Parse(source, nil) + expected = "1. aaa\n 1. aaa1\n\n" + testRendering(t, input, expected) + + source = []byte("1. aaa\n 1. aaa1\n 1. aaa1.1\n\n") + input = markdown.Parse(source, nil) + expected = "1. aaa\n 1. aaa1\n 1. aaa1.1\n\n" testRendering(t, input, expected) source = []byte("This is an [example](https://example.com) and another [website](https://github.com).")