mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
fd924d1802
commit
2e4ccd3d34
2 changed files with 43 additions and 1 deletions
|
@ -16,6 +16,7 @@ package create
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/helpers"
|
"github.com/gohugoio/hugo/helpers"
|
||||||
|
@ -57,6 +58,20 @@ draft: true
|
||||||
`
|
`
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
archetypeShortcodeReplacementsPre = strings.NewReplacer(
|
||||||
|
"{{<", "{x{<",
|
||||||
|
"{{%", "{x{%",
|
||||||
|
">}}", ">}x}",
|
||||||
|
"%}}", "%}x}")
|
||||||
|
|
||||||
|
archetypeShortcodeReplacementsPost = strings.NewReplacer(
|
||||||
|
"{x{<", "{{<",
|
||||||
|
"{x{%", "{{%",
|
||||||
|
">}x}", ">}}",
|
||||||
|
"%}x}", "%}}")
|
||||||
|
)
|
||||||
|
|
||||||
func executeArcheTypeAsTemplate(s *hugolib.Site, kind, targetPath, archetypeFilename string) ([]byte, error) {
|
func executeArcheTypeAsTemplate(s *hugolib.Site, kind, targetPath, archetypeFilename string) ([]byte, error) {
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -86,6 +101,10 @@ func executeArcheTypeAsTemplate(s *hugolib.Site, kind, targetPath, archetypeFile
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The archetype template may contain shortcodes, and these does not play well
|
||||||
|
// with the Go templates. Need to set some temporary delimiters.
|
||||||
|
archetypeTemplate = []byte(archetypeShortcodeReplacementsPre.Replace(string(archetypeTemplate)))
|
||||||
|
|
||||||
// Reuse the Hugo template setup to get the template funcs properly set up.
|
// Reuse the Hugo template setup to get the template funcs properly set up.
|
||||||
templateHandler := s.Deps.Tmpl.(tpl.TemplateHandler)
|
templateHandler := s.Deps.Tmpl.(tpl.TemplateHandler)
|
||||||
templateName := "_text/" + helpers.Filename(archetypeFilename)
|
templateName := "_text/" + helpers.Filename(archetypeFilename)
|
||||||
|
@ -100,7 +119,7 @@ func executeArcheTypeAsTemplate(s *hugolib.Site, kind, targetPath, archetypeFile
|
||||||
return nil, fmt.Errorf("Failed to process archetype file %q: %s", archetypeFilename, err)
|
return nil, fmt.Errorf("Failed to process archetype file %q: %s", archetypeFilename, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
archetypeContent = buff.Bytes()
|
archetypeContent = []byte(archetypeShortcodeReplacementsPost.Replace(buff.String()))
|
||||||
|
|
||||||
if !bytes.Contains(archetypeContent, []byte("date")) || !bytes.Contains(archetypeContent, []byte("title")) {
|
if !bytes.Contains(archetypeContent, []byte("date")) || !bytes.Contains(archetypeContent, []byte("title")) {
|
||||||
// TODO(bep) remove some time in the future.
|
// TODO(bep) remove some time in the future.
|
||||||
|
|
|
@ -49,6 +49,11 @@ func TestNewContent(t *testing.T) {
|
||||||
{"stump", "stump/sample-2.md", []string{`title: "Sample 2"`}}, // no archetype file
|
{"stump", "stump/sample-2.md", []string{`title: "Sample 2"`}}, // no archetype file
|
||||||
{"", "sample-3.md", []string{`title: "Sample 3"`}}, // no archetype
|
{"", "sample-3.md", []string{`title: "Sample 3"`}}, // no archetype
|
||||||
{"product", "product/sample-4.md", []string{`title = "SAMPLE-4"`}}, // empty archetype front matter
|
{"product", "product/sample-4.md", []string{`title = "SAMPLE-4"`}}, // empty archetype front matter
|
||||||
|
{"shortcodes", "shortcodes/go.md", []string{
|
||||||
|
`title = "GO"`,
|
||||||
|
"{{< myshortcode >}}",
|
||||||
|
"{{% myshortcode %}}",
|
||||||
|
"{{</* comment */>}}\n{{%/* comment */%}}"}}, // shortcodes
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, c := range cases {
|
for _, c := range cases {
|
||||||
|
@ -126,6 +131,24 @@ title = "{{ .BaseFileName | upper }}"
|
||||||
path: filepath.Join("archetypes", "emptydate.md"),
|
path: filepath.Join("archetypes", "emptydate.md"),
|
||||||
content: "+++\ndate =\"\"\ntitle = \"Empty Date Arch title\"\ntest = \"test1\"\n+++\n",
|
content: "+++\ndate =\"\"\ntitle = \"Empty Date Arch title\"\ntest = \"test1\"\n+++\n",
|
||||||
},
|
},
|
||||||
|
// #3623x
|
||||||
|
{
|
||||||
|
path: filepath.Join("archetypes", "shortcodes.md"),
|
||||||
|
content: `+++
|
||||||
|
title = "{{ .BaseFileName | upper }}"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< myshortcode >}}
|
||||||
|
|
||||||
|
Some text.
|
||||||
|
|
||||||
|
{{% myshortcode %}}
|
||||||
|
{{</* comment */>}}
|
||||||
|
{{%/* comment */%}}
|
||||||
|
|
||||||
|
|
||||||
|
`,
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
f, err := fs.Source.Create(v.path)
|
f, err := fs.Source.Create(v.path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue