func (p Pages) Sort() { sort.Sort(p) }
func (p Pages) Limit(n int) Pages { return p[0:n] }
-func getSummaryString(content []byte) ([]byte, bool) {
+func getSummaryString(content []byte, fmt string) []byte {
if bytes.Contains(content, summaryDivider) {
- return bytes.Split(content, summaryDivider)[0], false
+ // If user defines split:
+ // Split then render
+ return renderBytes(bytes.Split(content, summaryDivider)[0], fmt)
} else {
- plainContent := StripHTML(StripShortcodes(string(content)))
- return []byte(TruncateWordsToWholeSentence(plainContent, summaryLength)), true
+ // If hugo defines split:
+ // render, strip html, then split
+ plainContent := StripHTML(StripShortcodes(string(renderBytes(content, fmt))))
+ return []byte(TruncateWordsToWholeSentence(plainContent, summaryLength))
+ }
+}
+
+func renderBytes(content []byte, fmt string) []byte {
+ switch fmt {
+ default:
+ return blackfriday.MarkdownCommon(content)
+ case "markdown":
+ return blackfriday.MarkdownCommon(content)
+ case "rst":
+ return []byte(getRstContent(content))
}
}
b.ReadFrom(lines)
content := b.Bytes()
page.Content = template.HTML(string(blackfriday.MarkdownCommon(RemoveSummaryDivider(content))))
- summary, plain := getSummaryString(content)
- if plain {
- page.Summary = template.HTML(string(summary))
- } else {
- page.Summary = template.HTML(string(blackfriday.MarkdownCommon(summary)))
- }
+ summary := getSummaryString(content, "markdown")
+ page.Summary = template.HTML(string(summary))
}
func (page *Page) convertRestructuredText(lines io.Reader) {
b.ReadFrom(lines)
content := b.Bytes()
page.Content = template.HTML(getRstContent(content))
- summary, plain := getSummaryString(content)
- if plain {
- page.Summary = template.HTML(string(summary))
- } else {
- page.Summary = template.HTML(getRstContent(summary))
- }
+ summary := getSummaryString(content, "rst")
+ page.Summary = template.HTML(string(summary))
}
func (p *Page) TargetPath() (outfile string) {
Summary Next Line
<!--more-->
+Some more text
+`
+ SIMPLE_PAGE_WITH_SHORTCODE_IN_SUMMARY = `---
+title: Simple
+---
+Summary Next Line. {{% img src="/not/real" %}}.
+More text here.
+
Some more text
`
checkPageSummary(t, p, "<p>Summary Next Line</p>\n")
checkPageType(t, p, "page")
checkPageLayout(t, p, "page/single.html")
+}
+func TestPageWithShortCodeInSummary(t *testing.T) {
+ p, err := ReadFrom(strings.NewReader(SIMPLE_PAGE_WITH_SHORTCODE_IN_SUMMARY), "simple.md")
+ if err != nil {
+ t.Fatalf("Unable to create a page with frontmatter and body content: %s", err)
+ }
+ checkPageTitle(t, p, "Simple")
+ checkPageContent(t, p, "<p>Summary Next Line. {{% img src=“/not/real” %}}.\nMore text here.</p>\n\n<p>Some more text</p>\n")
+ checkPageSummary(t, p, "Summary Next Line. . More text here. Some more text")
+ checkPageType(t, p, "page")
+ checkPageLayout(t, p, "page/single.html")
}
func TestPageWithMoreTag(t *testing.T) {