diff options
-rw-r--r-- | helpers/content.go | 11 | ||||
-rw-r--r-- | helpers/content_test.go | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/helpers/content.go b/helpers/content.go index e61888357..5eeca88b6 100644 --- a/helpers/content.go +++ b/helpers/content.go @@ -44,6 +44,7 @@ var ( openingPTag = []byte("<p>") closingPTag = []byte("</p>") paragraphIndicator = []byte("<p") + closingIndicator = []byte("</") ) // 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 // of the input (whitespace excluded). func (c *ContentSpec) TrimShortHTML(input []byte) []byte { - first := bytes.Index(input, paragraphIndicator) - last := bytes.LastIndex(input, paragraphIndicator) - if first == last { + firstOpeningP := bytes.Index(input, paragraphIndicator) + lastOpeningP := bytes.LastIndex(input, paragraphIndicator) + + lastClosingP := bytes.LastIndex(input, closingPTag) + lastClosing := bytes.LastIndex(input, closingIndicator) + + if firstOpeningP == lastOpeningP && lastClosingP == lastClosing { input = bytes.TrimSpace(input) input = bytes.TrimPrefix(input, openingPTag) input = bytes.TrimSuffix(input, closingPTag) diff --git a/helpers/content_test.go b/helpers/content_test.go index 7f82abc9d..86e5412c2 100644 --- a/helpers/content_test.go +++ b/helpers/content_test.go @@ -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("<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>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() |