mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
165edc7f0a
commit
d9f54a13c1
2 changed files with 114 additions and 4 deletions
|
@ -466,16 +466,16 @@ func (s *Site) preparePagesForRender(cfg BuildCfg, changed whatChanged) {
|
||||||
p.rawContentCopy = p.rawContent
|
p.rawContentCopy = p.rawContent
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := handleShortcodes(p, s.owner.tmpl); err != nil {
|
|
||||||
jww.ERROR.Printf("Failed to handle shortcodes for page %s: %s", p.BaseFileName(), err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if p.Markup == "markdown" {
|
if p.Markup == "markdown" {
|
||||||
tmpContent, tmpTableOfContents := helpers.ExtractTOC(p.rawContentCopy)
|
tmpContent, tmpTableOfContents := helpers.ExtractTOC(p.rawContentCopy)
|
||||||
p.TableOfContents = helpers.BytesToHTML(tmpTableOfContents)
|
p.TableOfContents = helpers.BytesToHTML(tmpTableOfContents)
|
||||||
p.rawContentCopy = tmpContent
|
p.rawContentCopy = tmpContent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := handleShortcodes(p, s.owner.tmpl); err != nil {
|
||||||
|
jww.ERROR.Printf("Failed to handle shortcodes for page %s: %s", p.BaseFileName(), err)
|
||||||
|
}
|
||||||
|
|
||||||
if p.Markup != "html" {
|
if p.Markup != "html" {
|
||||||
|
|
||||||
// Now we know enough to create a summary of the page and count some words
|
// Now we know enough to create a summary of the page and count some words
|
||||||
|
|
|
@ -3,6 +3,7 @@ package hugolib
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -172,6 +173,16 @@ func assertFileContent(t *testing.T, filename string, defaultInSubDir bool, matc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func assertFileContentRegexp(t *testing.T, filename string, defaultInSubDir bool, matches ...string) {
|
||||||
|
filename = replaceDefaultContentLanguageValue(filename, defaultInSubDir)
|
||||||
|
content := readDestination(t, filename)
|
||||||
|
for _, match := range matches {
|
||||||
|
match = replaceDefaultContentLanguageValue(match, defaultInSubDir)
|
||||||
|
r := regexp.MustCompile(match)
|
||||||
|
require.True(t, r.MatchString(content), fmt.Sprintf("File no match for %q in %q: %s", match, filename, content))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
func TestMultiSitesBuild(t *testing.T) {
|
func TestMultiSitesBuild(t *testing.T) {
|
||||||
for _, config := range []struct {
|
for _, config := range []struct {
|
||||||
|
@ -660,6 +671,105 @@ func TestChangeDefaultLanguage(t *testing.T) {
|
||||||
assertFileContent(t, "public/sect/doc2/index.html", true, "Single", "Hello")
|
assertFileContent(t, "public/sect/doc2/index.html", true, "Single", "Hello")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTableOfContentsInShortcodes(t *testing.T) {
|
||||||
|
testCommonResetState()
|
||||||
|
|
||||||
|
sites := createMultiTestSites(t, testSiteConfig{DefaultContentLanguage: "en"}, multiSiteTOMLConfigTemplate)
|
||||||
|
|
||||||
|
writeSource(t, "layouts/shortcodes/toc.html", tocShortcode)
|
||||||
|
writeSource(t, "content/post/simple.en.md", tocPageSimple)
|
||||||
|
writeSource(t, "content/post/withSCInHeading.en.md", tocPageWithShortcodesInHeadings)
|
||||||
|
|
||||||
|
cfg := BuildCfg{}
|
||||||
|
|
||||||
|
err := sites.Build(cfg)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Failed to build sites: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
assertFileContent(t, "public/en/post/simple/index.html", true, tocPageSimpleExpected)
|
||||||
|
assertFileContent(t, "public/en/post/withSCInHeading/index.html", true, tocPageWithShortcodesInHeadingsExpected)
|
||||||
|
}
|
||||||
|
|
||||||
|
var tocShortcode = `
|
||||||
|
{{ .Page.TableOfContents }}
|
||||||
|
`
|
||||||
|
|
||||||
|
var tocPageSimple = `---
|
||||||
|
title: tocTest
|
||||||
|
publishdate: "2000-01-01"
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< toc >}}
|
||||||
|
|
||||||
|
# Heading 1 {#1}
|
||||||
|
|
||||||
|
Some text.
|
||||||
|
|
||||||
|
## Subheading 1.1 {#1-1}
|
||||||
|
|
||||||
|
Some more text.
|
||||||
|
|
||||||
|
# Heading 2 {#2}
|
||||||
|
|
||||||
|
Even more text.
|
||||||
|
|
||||||
|
## Subheading 2.1 {#2-1}
|
||||||
|
|
||||||
|
Lorem ipsum...
|
||||||
|
`
|
||||||
|
|
||||||
|
var tocPageSimpleExpected = `<nav id="TableOfContents">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#1">Heading 1</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#1-1">Subheading 1.1</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a href="#2">Heading 2</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#2-1">Subheading 2.1</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</nav>`
|
||||||
|
|
||||||
|
var tocPageWithShortcodesInHeadings = `---
|
||||||
|
title: tocTest
|
||||||
|
publishdate: "2000-01-01"
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< toc >}}
|
||||||
|
|
||||||
|
# Heading 1 {#1}
|
||||||
|
|
||||||
|
Some text.
|
||||||
|
|
||||||
|
## Subheading 1.1 {{< shortcode >}} {#1-1}
|
||||||
|
|
||||||
|
Some more text.
|
||||||
|
|
||||||
|
# Heading 2 {{% shortcode %}} {#2}
|
||||||
|
|
||||||
|
Even more text.
|
||||||
|
|
||||||
|
## Subheading 2.1 {#2-1}
|
||||||
|
|
||||||
|
Lorem ipsum...
|
||||||
|
`
|
||||||
|
|
||||||
|
var tocPageWithShortcodesInHeadingsExpected = `<nav id="TableOfContents">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#1">Heading 1</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#1-1">Subheading 1.1 Shortcode: Hello</a></li>
|
||||||
|
</ul></li>
|
||||||
|
<li><a href="#2">Heading 2 Shortcode: Hello</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#2-1">Subheading 2.1</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</nav>`
|
||||||
|
|
||||||
var multiSiteTOMLConfigTemplate = `
|
var multiSiteTOMLConfigTemplate = `
|
||||||
DefaultExtension = "html"
|
DefaultExtension = "html"
|
||||||
baseurl = "http://example.com/blog"
|
baseurl = "http://example.com/blog"
|
||||||
|
|
Loading…
Reference in a new issue