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
|
return html.UnescapeString(ss), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var markdownTrimPrefix = []byte("<p>")
|
var (
|
||||||
var markdownTrimSuffix = []byte("</p>\n")
|
markdownTrimPrefix = []byte("<p>")
|
||||||
|
markdownTrimSuffix = []byte("</p>\n")
|
||||||
|
markdownParagraphIndicator = []byte("<p")
|
||||||
|
)
|
||||||
|
|
||||||
// Markdownify renders a given input from Markdown to HTML.
|
// Markdownify renders a given input from Markdown to HTML.
|
||||||
func (ns *Namespace) Markdownify(s interface{}) (template.HTML, error) {
|
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(),
|
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.TrimPrefix(m, markdownTrimPrefix)
|
||||||
m = bytes.TrimSuffix(m, markdownTrimSuffix)
|
m = bytes.TrimSuffix(m, markdownTrimSuffix)
|
||||||
|
}
|
||||||
|
|
||||||
return template.HTML(m), nil
|
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) {
|
func TestPlainify(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue