hugolib: Consider summary in front matter for .Summary

Add the ability to have a `summary` page variable that overrides
the auto-generated summary.  Logic for obtaining summary becomes:

  * if summary divider is present in content, use the text above it
  * if summary variables is present in page metadata, use that
  * auto-generate summary from first _x_ words of the content

Fixes #5800
This commit is contained in:
Jim McDonald
2019-04-05 18:11:04 +01:00
committed by Bjørn Erik Pedersen
parent ebab291c0e
commit 3a62d54745
8 changed files with 115 additions and 15 deletions

View File

@@ -128,6 +128,14 @@ func newPageContentOutput(p *pageState) func(f output.Format) (*pageContentOutpu
cp.summary = helpers.BytesToHTML(summary)
}
}
} else if cp.p.m.summary != "" {
html := cp.p.s.ContentSpec.RenderBytes(&helpers.RenderingContext{
Content: []byte(cp.p.m.summary), RenderTOC: false, PageFmt: cp.p.m.markup,
Cfg: p.Language(),
DocumentID: p.File().UniqueID(), DocumentName: p.File().Path(),
Config: cp.p.getRenderingConfig()})
html = cp.p.s.ContentSpec.TrimShortHTML(html)
cp.summary = helpers.BytesToHTML(html)
}
}
@@ -271,7 +279,7 @@ func (p *pageContentOutput) WordCount() int {
}
func (p *pageContentOutput) setAutoSummary() error {
if p.p.source.hasSummaryDivider {
if p.p.source.hasSummaryDivider || p.p.m.summary != "" {
return nil
}