mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
helpers: Fix TrimShortHTML
Where some tags are siblings of p tag. Fixes #7081
This commit is contained in:
parent
4a39564efe
commit
9c9987535f
2 changed files with 9 additions and 3 deletions
|
@ -44,6 +44,7 @@ var (
|
||||||
openingPTag = []byte("<p>")
|
openingPTag = []byte("<p>")
|
||||||
closingPTag = []byte("</p>")
|
closingPTag = []byte("</p>")
|
||||||
paragraphIndicator = []byte("<p")
|
paragraphIndicator = []byte("<p")
|
||||||
|
closingIndicator = []byte("</")
|
||||||
)
|
)
|
||||||
|
|
||||||
// ContentSpec provides functionality to render markdown content.
|
// ContentSpec provides functionality to render markdown content.
|
||||||
|
@ -315,9 +316,13 @@ func (c *ContentSpec) TruncateWordsToWholeSentence(s string) (string, bool) {
|
||||||
// where said tags are the only <p> tags in the input and enclose the content
|
// where said tags are the only <p> tags in the input and enclose the content
|
||||||
// of the input (whitespace excluded).
|
// of the input (whitespace excluded).
|
||||||
func (c *ContentSpec) TrimShortHTML(input []byte) []byte {
|
func (c *ContentSpec) TrimShortHTML(input []byte) []byte {
|
||||||
first := bytes.Index(input, paragraphIndicator)
|
firstOpeningP := bytes.Index(input, paragraphIndicator)
|
||||||
last := bytes.LastIndex(input, paragraphIndicator)
|
lastOpeningP := bytes.LastIndex(input, paragraphIndicator)
|
||||||
if first == last {
|
|
||||||
|
lastClosingP := bytes.LastIndex(input, closingPTag)
|
||||||
|
lastClosing := bytes.LastIndex(input, closingIndicator)
|
||||||
|
|
||||||
|
if firstOpeningP == lastOpeningP && lastClosingP == lastClosing {
|
||||||
input = bytes.TrimSpace(input)
|
input = bytes.TrimSpace(input)
|
||||||
input = bytes.TrimPrefix(input, openingPTag)
|
input = bytes.TrimPrefix(input, openingPTag)
|
||||||
input = bytes.TrimSuffix(input, closingPTag)
|
input = bytes.TrimSuffix(input, closingPTag)
|
||||||
|
|
|
@ -41,6 +41,7 @@ func TestTrimShortHTML(t *testing.T) {
|
||||||
{[]byte("\n \n \t <p> \t Whitespace\nHTML \n\t </p>\n\t"), []byte("Whitespace\nHTML")},
|
{[]byte("\n \n \t <p> \t Whitespace\nHTML \n\t </p>\n\t"), []byte("Whitespace\nHTML")},
|
||||||
{[]byte("<p>Multiple</p><p>paragraphs</p>"), []byte("<p>Multiple</p><p>paragraphs</p>")},
|
{[]byte("<p>Multiple</p><p>paragraphs</p>"), []byte("<p>Multiple</p><p>paragraphs</p>")},
|
||||||
{[]byte("<p>Nested<p>paragraphs</p></p>"), []byte("<p>Nested<p>paragraphs</p></p>")},
|
{[]byte("<p>Nested<p>paragraphs</p></p>"), []byte("<p>Nested<p>paragraphs</p></p>")},
|
||||||
|
{[]byte("<p>Hello</p>\n<ul>\n<li>list1</li>\n<li>list2</li>\n</ul>"), []byte("<p>Hello</p>\n<ul>\n<li>list1</li>\n<li>list2</li>\n</ul>")},
|
||||||
}
|
}
|
||||||
|
|
||||||
c := newTestContentSpec()
|
c := newTestContentSpec()
|
||||||
|
|
Loading…
Reference in a new issue