diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2022-05-25 10:56:14 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2022-05-25 17:55:23 +0200 |
commit | 3854a6fa6c323d1c09aa71a0626c9eef62709294 (patch) | |
tree | ea3727c14f73fb73aef89d43795dd6d6f75f1220 /hugolib | |
parent | cd0112a05a9ddb7043c9808284f93d8099c48473 (diff) |
Fix Plainify edge cases
This commit replaces the main part of `helpers.StripHTML` with Go's implementation in its html/template package.
It's a little slower, but correctness is more important:
```bash
BenchmarkStripHTMLOld-10 680316 1764 ns/op 728 B/op 4 allocs/op
BenchmarkStripHTMLNew-10 384520 3099 ns/op 2089 B/op 10 allocs/op
```
Fixes #9199
Fixes #9909
Closes #9410
Diffstat (limited to 'hugolib')
-rw-r--r-- | hugolib/page__per_output.go | 2 | ||||
-rw-r--r-- | hugolib/page_test.go | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/hugolib/page__per_output.go b/hugolib/page__per_output.go index 6460b120b..59299b709 100644 --- a/hugolib/page__per_output.go +++ b/hugolib/page__per_output.go @@ -201,7 +201,7 @@ func newPageContentOutput(p *pageState, po *pageOutput) (*pageContentOutput, err }) cp.initPlain = cp.initMain.Branch(func() (any, error) { - cp.plain = helpers.StripHTML(string(cp.content)) + cp.plain = tpl.StripHTML(string(cp.content)) cp.plainWords = strings.Fields(cp.plain) cp.setWordCounts(p.m.isCJKLanguage) diff --git a/hugolib/page_test.go b/hugolib/page_test.go index b93173131..e5f8840a6 100644 --- a/hugolib/page_test.go +++ b/hugolib/page_test.go @@ -26,6 +26,7 @@ import ( "github.com/gohugoio/hugo/htesting" "github.com/gohugoio/hugo/markup/asciidocext" "github.com/gohugoio/hugo/markup/rst" + "github.com/gohugoio/hugo/tpl" "github.com/gohugoio/hugo/config" @@ -40,7 +41,6 @@ import ( qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/deps" - "github.com/gohugoio/hugo/helpers" ) const ( @@ -351,7 +351,7 @@ func normalizeExpected(ext, str string) string { default: return str case "html": - return strings.Trim(helpers.StripHTML(str), " ") + return strings.Trim(tpl.StripHTML(str), " ") case "ad": paragraphs := strings.Split(str, "</p>") expected := "" @@ -1736,6 +1736,7 @@ Len Summary: {{ len .Summary }} Len Content: {{ len .Content }} SUMMARY:{{ .Summary }}:{{ len .Summary }}:END + `} b := newTestSitesBuilder(t) |