mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
tpl/transform: Only strip p tag in markdownify if only one paragraph
Fixes #3040
This commit is contained in:
parent
2d1bd876cd
commit
33ae10b6ad
2 changed files with 41 additions and 4 deletions
|
@ -79,8 +79,11 @@ func (ns *Namespace) HTMLUnescape(s interface{}) (string, error) {
|
|||
return html.UnescapeString(ss), nil
|
||||
}
|
||||
|
||||
var markdownTrimPrefix = []byte("<p>")
|
||||
var markdownTrimSuffix = []byte("</p>\n")
|
||||
var (
|
||||
markdownTrimPrefix = []byte("<p>")
|
||||
markdownTrimSuffix = []byte("</p>\n")
|
||||
markdownParagraphIndicator = []byte("<p")
|
||||
)
|
||||
|
||||
// Markdownify renders a given input from Markdown to HTML.
|
||||
func (ns *Namespace) Markdownify(s interface{}) (template.HTML, error) {
|
||||
|
@ -97,8 +100,14 @@ func (ns *Namespace) Markdownify(s interface{}) (template.HTML, error) {
|
|||
Config: ns.deps.ContentSpec.NewBlackfriday(),
|
||||
},
|
||||
)
|
||||
|
||||
// Strip if this is a short inline type of text.
|
||||
first := bytes.Index(m, markdownParagraphIndicator)
|
||||
last := bytes.LastIndex(m, markdownParagraphIndicator)
|
||||
if first == last {
|
||||
m = bytes.TrimPrefix(m, markdownTrimPrefix)
|
||||
m = bytes.TrimSuffix(m, markdownTrimSuffix)
|
||||
}
|
||||
|
||||
return template.HTML(m), nil
|
||||
}
|
||||
|
|
|
@ -168,6 +168,34 @@ func TestMarkdownify(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// Issue #3040
|
||||
func TestMarkdownifyBlocksOfText(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
assert := require.New(t)
|
||||
|
||||
ns := New(newDeps(viper.New()))
|
||||
|
||||
text := `
|
||||
#First
|
||||
|
||||
This is some *bold* text.
|
||||
|
||||
## Second
|
||||
|
||||
This is some more text.
|
||||
|
||||
And then some.
|
||||
`
|
||||
|
||||
result, err := ns.Markdownify(text)
|
||||
assert.NoError(err)
|
||||
assert.Equal(template.HTML(
|
||||
"<p>#First</p>\n\n<p>This is some <em>bold</em> text.</p>\n\n<h2 id=\"second\">Second</h2>\n\n<p>This is some more text.</p>\n\n<p>And then some.</p>\n"),
|
||||
result)
|
||||
|
||||
}
|
||||
|
||||
func TestPlainify(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
|
Loading…
Reference in a new issue