From 0bde6931ac8fb288565b6f951f6e10adf529d527 Mon Sep 17 00:00:00 2001
From: Joe Mooring tags in the input and enclose the content
// of the input (whitespace excluded).
func (c *ContentSpec) TrimShortHTML(input []byte) []byte {
- 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)
+ if bytes.Count(input, openingPTag) == 1 {
input = bytes.TrimSpace(input)
+ if bytes.HasPrefix(input, openingPTag) && bytes.HasSuffix(input, closingPTag) {
+ input = bytes.TrimPrefix(input, openingPTag)
+ input = bytes.TrimSuffix(input, closingPTag)
+ input = bytes.TrimSpace(input)
+ }
}
+
return input
}
diff --git a/helpers/content_test.go b/helpers/content_test.go
index 2909c026639..72e3eeb495a 100644
--- a/helpers/content_test.go
+++ b/helpers/content_test.go
@@ -32,12 +32,15 @@ func TestTrimShortHTML(t *testing.T) {
}{
{[]byte(""), []byte("")},
{[]byte("Plain text"), []byte("Plain text")},
- {[]byte(" \t\n Whitespace text\n\n"), []byte("Whitespace text")},
+ // This seems wrong. Why touch it if it doesn't have p tag?
+ // {[]byte(" \t\n Whitespace text\n\n"), []byte("Whitespace text")},
{[]byte(" Simple paragraph \t Whitespace\nHTML \n\t Multiple paragraphs Multiple paragraphs Nested paragraphs
Nested
paragraphs
")}, {[]byte("Hello
\nHello
\nc
"), []byte("c
")}, } c := newTestContentSpec(nil) diff --git a/tpl/transform/integration_test.go b/tpl/transform/integration_test.go new file mode 100644 index 00000000000..17348928db6 --- /dev/null +++ b/tpl/transform/integration_test.go @@ -0,0 +1,67 @@ +// Copyright 2023 The Hugo Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package transform_test + +import ( + "testing" + + "github.com/gohugoio/hugo/hugolib" +) + +// Issue #11698 +func TestMarkdownifyIssue11698(t *testing.T) { + t.Parallel() + + files := ` +-- config.toml -- +disableKinds = ['home','section','rss','sitemap','taxonomy','term'] +[markup.goldmark.parser.attribute] +title = true +block = true +-- layouts/_default/single.html -- +_{{ markdownify .RawContent }}_ +-- content/p1.md -- +--- +title: p1 +--- +foo bar +-- content/p2.md -- +--- +title: p2 +--- +foo + +**bar** +-- content/p3.md -- +--- +title: p3 +--- +## foo + +bar +-- content/p4.md -- +--- +title: p4 +--- +foo +{#bar} + ` + + b := hugolib.Test(t, files) + + b.AssertFileContent("public/p1/index.html", "_foo bar_") + b.AssertFileContent("public/p2/index.html", "_foo
\nbar
\n_") + b.AssertFileContent("public/p3/index.html", "_bar
\n_") + b.AssertFileContent("public/p4/index.html", "_foo
\n_") +}