summaryrefslogtreecommitdiffstats
path: root/output
diff options
context:
space:
mode:
Diffstat (limited to 'output')
-rw-r--r--output/docshelper.go2
-rw-r--r--output/layout.go30
-rw-r--r--output/layout_base.go91
-rw-r--r--output/layout_base_test.go97
-rw-r--r--output/layout_test.go80
5 files changed, 88 insertions, 212 deletions
diff --git a/output/docshelper.go b/output/docshelper.go
index 6b7826002..fcf9ae61c 100644
--- a/output/docshelper.go
+++ b/output/docshelper.go
@@ -68,7 +68,7 @@ func createLayoutExamples() interface{} {
{"Taxonomy term in categories", LayoutDescriptor{Kind: "taxonomyTerm", Type: "categories", Section: "category"}, false, HTMLFormat},
} {
- l := NewLayoutHandler(example.hasTheme)
+ l := NewLayoutHandler()
layouts, _ := l.For(example.d, example.f)
basicExamples = append(basicExamples, Example{
diff --git a/output/layout.go b/output/layout.go
index 206293842..f83490d81 100644
--- a/output/layout.go
+++ b/output/layout.go
@@ -41,8 +41,6 @@ type LayoutDescriptor struct {
// LayoutHandler calculates the layout template to use to render a given output type.
type LayoutHandler struct {
- hasTheme bool
-
mu sync.RWMutex
cache map[layoutCacheKey][]string
}
@@ -53,8 +51,8 @@ type layoutCacheKey struct {
}
// NewLayoutHandler creates a new LayoutHandler.
-func NewLayoutHandler(hasTheme bool) *LayoutHandler {
- return &LayoutHandler{hasTheme: hasTheme, cache: make(map[layoutCacheKey][]string)}
+func NewLayoutHandler() *LayoutHandler {
+ return &LayoutHandler{cache: make(map[layoutCacheKey][]string)}
}
// For returns a layout for the given LayoutDescriptor and options.
@@ -72,30 +70,6 @@ func (l *LayoutHandler) For(d LayoutDescriptor, f Format) ([]string, error) {
layouts := resolvePageTemplate(d, f)
- if l.hasTheme {
- // From Hugo 0.33 we interleave the project/theme templates. This was kind of a fundamental change, but the
- // previous behaviour was surprising.
- // As an example, an `index.html` in theme for the home page will now win over a `_default/list.html` in the project.
- layoutsWithThemeLayouts := []string{}
-
- // First place all non internal templates
- for _, t := range layouts {
- if !strings.HasPrefix(t, "_internal/") {
- layoutsWithThemeLayouts = append(layoutsWithThemeLayouts, t)
- layoutsWithThemeLayouts = append(layoutsWithThemeLayouts, "theme/"+t)
- }
- }
-
- // Lastly place internal templates
- for _, t := range layouts {
- if strings.HasPrefix(t, "_internal/") {
- layoutsWithThemeLayouts = append(layoutsWithThemeLayouts, t)
- }
- }
-
- layouts = layoutsWithThemeLayouts
- }
-
layouts = prependTextPrefixIfNeeded(f, layouts...)
layouts = helpers.UniqueStrings(layouts)
diff --git a/output/layout_base.go b/output/layout_base.go
index 49ae1d64e..31e1194f4 100644
--- a/output/layout_base.go
+++ b/output/layout_base.go
@@ -40,26 +40,16 @@ type TemplateNames struct {
}
type TemplateLookupDescriptor struct {
- // TemplateDir is the project or theme root of the current template.
- // This will be the same as WorkingDir for non-theme templates.
- TemplateDir string
-
// The full path to the site root.
WorkingDir string
- // Main project layout dir, defaults to "layouts"
- LayoutDir string
-
// The path to the template relative the the base.
// I.e. shortcodes/youtube.html
RelPath string
- // The template name prefix to look for, i.e. "theme".
+ // The template name prefix to look for.
Prefix string
- // The theme dir if theme active.
- ThemeDir string
-
// All the output formats in play. This is used to decide if text/template or
// html/template.
OutputFormats Formats
@@ -71,6 +61,7 @@ type TemplateLookupDescriptor struct {
func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
name := filepath.ToSlash(d.RelPath)
+ name = strings.TrimPrefix(name, "/")
if d.Prefix != "" {
name = strings.Trim(d.Prefix, "/") + "/" + name
@@ -78,22 +69,8 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
var (
id TemplateNames
-
- // This is the path to the actual template in process. This may
- // be in the theme's or the project's /layouts.
- baseLayoutDir = filepath.Join(d.TemplateDir, d.LayoutDir)
- fullPath = filepath.Join(baseLayoutDir, d.RelPath)
-
- // This is always the project's layout dir.
- baseWorkLayoutDir = filepath.Join(d.WorkingDir, d.LayoutDir)
-
- baseThemeLayoutDir string
)
- if d.ThemeDir != "" {
- baseThemeLayoutDir = filepath.Join(d.ThemeDir, "layouts")
- }
-
// The filename will have a suffix with an optional type indicator.
// Examples:
// index.html
@@ -119,7 +96,7 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
filenameNoSuffix := parts[0]
- id.OverlayFilename = fullPath
+ id.OverlayFilename = d.RelPath
id.Name = name
if isPlainText {
@@ -127,7 +104,7 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
}
// Ace and Go templates may have both a base and inner template.
- pathDir := filepath.Dir(fullPath)
+ pathDir := filepath.Dir(d.RelPath)
if ext == "amber" || strings.HasSuffix(pathDir, "partials") || strings.HasSuffix(pathDir, "shortcodes") {
// No base template support
@@ -150,7 +127,7 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
// This may be a view that shouldn't have base template
// Have to look inside it to make sure
- needsBase, err := d.ContainsAny(fullPath, innerMarkers)
+ needsBase, err := d.ContainsAny(d.RelPath, innerMarkers)
if err != nil {
return id, err
}
@@ -158,21 +135,14 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
if needsBase {
currBaseFilename := fmt.Sprintf("%s-%s", filenameNoSuffix, baseFilename)
- templateDir := filepath.Dir(fullPath)
-
- // Find the base, e.g. "_default".
- baseTemplatedDir := strings.TrimPrefix(templateDir, baseLayoutDir)
- baseTemplatedDir = strings.TrimPrefix(baseTemplatedDir, helpers.FilePathSeparator)
-
// Look for base template in the follwing order:
// 1. <current-path>/<template-name>-baseof.<outputFormat>(optional).<suffix>, e.g. list-baseof.<outputFormat>(optional).<suffix>.
// 2. <current-path>/baseof.<outputFormat>(optional).<suffix>
// 3. _default/<template-name>-baseof.<outputFormat>(optional).<suffix>, e.g. list-baseof.<outputFormat>(optional).<suffix>.
// 4. _default/baseof.<outputFormat>(optional).<suffix>
- // For each of the steps above, it will first look in the project, then, if theme is set,
- // in the theme's layouts folder.
- // Also note that the <current-path> may be both the project's layout folder and the theme's.
- pairsToCheck := createPairsToCheck(baseTemplatedDir, baseFilename, currBaseFilename)
+ //
+ // The filesystem it looks in a a composite of the project and potential theme(s).
+ pathsToCheck := createPathsToCheck(pathDir, baseFilename, currBaseFilename)
// We may have language code and/or "terms" in the template name. We want the most specific,
// but need to fall back to the baseof.html or baseof.ace if needed.
@@ -183,20 +153,15 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
if len(p1) > 0 && len(p1) == len(p2) {
for i := len(p1); i > 0; i-- {
v1, v2 := strings.Join(p1[:i], ".")+"."+ext, strings.Join(p2[:i], ".")+"."+ext
- pairsToCheck = append(pairsToCheck, createPairsToCheck(baseTemplatedDir, v1, v2)...)
+ pathsToCheck = append(pathsToCheck, createPathsToCheck(pathDir, v1, v2)...)
}
}
- Loop:
- for _, pair := range pairsToCheck {
- pathsToCheck := basePathsToCheck(pair, baseLayoutDir, baseWorkLayoutDir, baseThemeLayoutDir)
-
- for _, pathToCheck := range pathsToCheck {
- if ok, err := d.FileExists(pathToCheck); err == nil && ok {
- id.MasterFilename = pathToCheck
- break Loop
- }
+ for _, p := range pathsToCheck {
+ if ok, err := d.FileExists(p); err == nil && ok {
+ id.MasterFilename = p
+ break
}
}
}
@@ -205,29 +170,11 @@ func CreateTemplateNames(d TemplateLookupDescriptor) (TemplateNames, error) {
}
-func createPairsToCheck(baseTemplatedDir, baseFilename, currBaseFilename string) [][]string {
- return [][]string{
- {baseTemplatedDir, currBaseFilename},
- {baseTemplatedDir, baseFilename},
- {"_default", currBaseFilename},
- {"_default", baseFilename},
- }
-}
-
-func basePathsToCheck(path []string, layoutDir, workLayoutDir, themeLayoutDir string) []string {
- // workLayoutDir will always be the most specific, so start there.
- pathsToCheck := []string{filepath.Join((append([]string{workLayoutDir}, path...))...)}
-
- if layoutDir != "" && layoutDir != workLayoutDir {
- pathsToCheck = append(pathsToCheck, filepath.Join((append([]string{layoutDir}, path...))...))
+func createPathsToCheck(baseTemplatedDir, baseFilename, currBaseFilename string) []string {
+ return []string{
+ filepath.Join(baseTemplatedDir, currBaseFilename),
+ filepath.Join(baseTemplatedDir, baseFilename),
+ filepath.Join("_default", currBaseFilename),
+ filepath.Join("_default", baseFilename),
}
-
- // May have a theme
- if themeLayoutDir != "" && themeLayoutDir != layoutDir {
- pathsToCheck = append(pathsToCheck, filepath.Join((append([]string{themeLayoutDir}, path...))...))
-
- }
-
- return pathsToCheck
-
}
diff --git a/output/layout_base_test.go b/output/layout_base_test.go
index d7c7fbb90..719407524 100644
--- a/output/layout_base_test.go
+++ b/output/layout_base_test.go
@@ -25,8 +25,6 @@ func TestLayoutBase(t *testing.T) {
var (
workingDir = "/sites/mysite/"
- themeDir = "/themes/mytheme/"
- layoutBase1 = "layouts"
layoutPath1 = "_default/single.html"
layoutPathAmp = "_default/single.amp.html"
layoutPathJSON = "_default/single.json"
@@ -39,108 +37,72 @@ func TestLayoutBase(t *testing.T) {
basePathMatchStrings string
expect TemplateNames
}{
- {"No base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1}, false, "",
+ {"No base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: layoutPath1}, false, "",
TemplateNames{
Name: "_default/single.html",
- OverlayFilename: "/sites/mysite/layouts/_default/single.html",
+ OverlayFilename: "_default/single.html",
}},
- {"Base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1}, true, "",
+ {"Base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: layoutPath1}, true, "",
TemplateNames{
Name: "_default/single.html",
- OverlayFilename: "/sites/mysite/layouts/_default/single.html",
- MasterFilename: "/sites/mysite/layouts/_default/single-baseof.html",
+ OverlayFilename: "_default/single.html",
+ MasterFilename: "_default/single-baseof.html",
}},
// Issue #3893
- {"Base Lang, Default Base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: "layouts", RelPath: "_default/list.en.html"}, true, "_default/baseof.html",
+ {"Base Lang, Default Base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: "_default/list.en.html"}, true, "_default/baseof.html",
TemplateNames{
Name: "_default/list.en.html",
- OverlayFilename: "/sites/mysite/layouts/_default/list.en.html",
- MasterFilename: "/sites/mysite/layouts/_default/baseof.html",
+ OverlayFilename: "_default/list.en.html",
+ MasterFilename: "_default/baseof.html",
}},
- {"Base Lang, Lang Base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: "layouts", RelPath: "_default/list.en.html"}, true, "_default/baseof.html|_default/baseof.en.html",
+ {"Base Lang, Lang Base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: "_default/list.en.html"}, true, "_default/baseof.html|_default/baseof.en.html",
TemplateNames{
Name: "_default/list.en.html",
- OverlayFilename: "/sites/mysite/layouts/_default/list.en.html",
- MasterFilename: "/sites/mysite/layouts/_default/baseof.en.html",
+ OverlayFilename: "_default/list.en.html",
+ MasterFilename: "_default/baseof.en.html",
}},
// Issue #3856
- {"Base Taxonomy Term", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: "taxonomy/tag.terms.html"}, true, "_default/baseof.html",
+ {"Base Taxonomy Term", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: "taxonomy/tag.terms.html"}, true, "_default/baseof.html",
TemplateNames{
Name: "taxonomy/tag.terms.html",
- OverlayFilename: "/sites/mysite/layouts/taxonomy/tag.terms.html",
- MasterFilename: "/sites/mysite/layouts/_default/baseof.html",
+ OverlayFilename: "taxonomy/tag.terms.html",
+ MasterFilename: "_default/baseof.html",
}},
- {"Base in theme", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1, ThemeDir: themeDir}, true,
- "mytheme/layouts/_default/baseof.html",
- TemplateNames{
- Name: "_default/single.html",
- OverlayFilename: "/sites/mysite/layouts/_default/single.html",
- MasterFilename: "/themes/mytheme/layouts/_default/baseof.html",
- }},
- {"Template in theme, base in theme", TemplateLookupDescriptor{TemplateDir: themeDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1, ThemeDir: themeDir}, true,
- "mytheme/layouts/_default/baseof.html",
- TemplateNames{
- Name: "_default/single.html",
- OverlayFilename: "/themes/mytheme/layouts/_default/single.html",
- MasterFilename: "/themes/mytheme/layouts/_default/baseof.html",
- }},
- {"Template in theme, base in site", TemplateLookupDescriptor{TemplateDir: themeDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1, ThemeDir: themeDir}, true,
- "/sites/mysite/layouts/_default/baseof.html",
- TemplateNames{
- Name: "_default/single.html",
- OverlayFilename: "/themes/mytheme/layouts/_default/single.html",
- MasterFilename: "/sites/mysite/layouts/_default/baseof.html",
- }},
- {"Template in site, base in theme", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1, ThemeDir: themeDir}, true,
- "/themes/mytheme",
- TemplateNames{
- Name: "_default/single.html",
- OverlayFilename: "/sites/mysite/layouts/_default/single.html",
- MasterFilename: "/themes/mytheme/layouts/_default/single-baseof.html",
- }},
- {"With prefix, base in theme", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPath1,
- ThemeDir: themeDir, Prefix: "someprefix"}, true,
- "mytheme/layouts/_default/baseof.html",
- TemplateNames{
- Name: "someprefix/_default/single.html",
- OverlayFilename: "/sites/mysite/layouts/_default/single.html",
- MasterFilename: "/themes/mytheme/layouts/_default/baseof.html",
- }},
- {"Partial", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: "partials/menu.html"}, true,
+ {"Partial", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: "partials/menu.html"}, true,
"mytheme/layouts/_default/baseof.html",
TemplateNames{
Name: "partials/menu.html",
- OverlayFilename: "/sites/mysite/layouts/partials/menu.html",
+ OverlayFilename: "partials/menu.html",
}},
- {"AMP, no base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPathAmp}, false, "",
+ {"AMP, no base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: layoutPathAmp}, false, "",
TemplateNames{
Name: "_default/single.amp.html",
- OverlayFilename: "/sites/mysite/layouts/_default/single.amp.html",
+ OverlayFilename: "_default/single.amp.html",
}},
- {"JSON, no base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPathJSON}, false, "",
+ {"JSON, no base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: layoutPathJSON}, false, "",
TemplateNames{
Name: "_default/single.json",
- OverlayFilename: "/sites/mysite/layouts/_default/single.json",
+ OverlayFilename: "_default/single.json",
}},
- {"AMP with base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPathAmp}, true, "single-baseof.html|single-baseof.amp.html",
+ {"AMP with base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: layoutPathAmp}, true, "single-baseof.html|single-baseof.amp.html",
TemplateNames{
Name: "_default/single.amp.html",
- OverlayFilename: "/sites/mysite/layouts/_default/single.amp.html",
- MasterFilename: "/sites/mysite/layouts/_default/single-baseof.amp.html",
+ OverlayFilename: "_default/single.amp.html",
+ MasterFilename: "_default/single-baseof.amp.html",
}},
- {"AMP with no AMP base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPathAmp}, true, "single-baseof.html",
+ {"AMP with no AMP base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: layoutPathAmp}, true, "single-baseof.html",
TemplateNames{
Name: "_default/single.amp.html",
- OverlayFilename: "/sites/mysite/layouts/_default/single.amp.html",
- MasterFilename: "/sites/mysite/layouts/_default/single-baseof.html",
+ OverlayFilename: "_default/single.amp.html",
+ MasterFilename: "_default/single-baseof.html",
}},
- {"JSON with base", TemplateLookupDescriptor{TemplateDir: workingDir, WorkingDir: workingDir, LayoutDir: layoutBase1, RelPath: layoutPathJSON}, true, "single-baseof.json",
+ {"JSON with base", TemplateLookupDescriptor{WorkingDir: workingDir, RelPath: layoutPathJSON}, true, "single-baseof.json",
TemplateNames{
Name: "_default/single.json",
- OverlayFilename: "/sites/mysite/layouts/_default/single.json",
- MasterFilename: "/sites/mysite/layouts/_default/single-baseof.json",
+ OverlayFilename: "_default/single.json",
+ MasterFilename: "_default/single-baseof.json",
}},
} {
t.Run(this.name, func(t *testing.T) {
@@ -164,7 +126,6 @@ func TestLayoutBase(t *testing.T) {
this.d.OutputFormats = Formats{AMPFormat, HTMLFormat, RSSFormat, JSONFormat}
this.d.WorkingDir = filepath.FromSlash(this.d.WorkingDir)
- this.d.LayoutDir = filepath.FromSlash(this.d.LayoutDir)
this.d.RelPath = filepath.FromSlash(this.d.RelPath)
this.d.ContainsAny = needsBase
this.d.FileExists = fileExists
diff --git a/output/layout_test.go b/output/layout_test.go
index 3c7fde41a..4b958e9ff 100644
--- a/output/layout_test.go
+++ b/output/layout_test.go
@@ -57,62 +57,61 @@ func TestLayout(t *testing.T) {
for _, this := range []struct {
name string
d LayoutDescriptor
- hasTheme bool
layoutOverride string
tp Format
expect []string
expectCount int
}{
- {"Home", LayoutDescriptor{Kind: "home"}, true, "", ampType,
- []string{"index.amp.html", "theme/index.amp.html", "home.amp.html", "theme/home.amp.html", "list.amp.html", "theme/list.amp.html", "index.html", "theme/index.html", "home.html", "theme/home.html", "list.html", "theme/list.html", "_default/index.amp.html"}, 24},
- {"Home, HTML", LayoutDescriptor{Kind: "home"}, true, "", htmlFormat,
+ {"Home", LayoutDescriptor{Kind: "home"}, "", ampType,
+ []string{"index.amp.html", "home.amp.html", "list.amp.html", "index.html", "home.html", "list.html", "_default/index.amp.html"}, 12},
+ {"Home, HTML", LayoutDescriptor{Kind: "home"}, "", htmlFormat,
// We will eventually get to index.html. This looks stuttery, but makes the lookup logic easy to understand.
- []string{"index.html.html", "theme/index.html.html", "home.html.html"}, 24},
- {"Home, french language", LayoutDescriptor{Kind: "home", Lang: "fr"}, true, "", ampType,
- []string{"index.fr.amp.html", "theme/index.fr.amp.html"},
- 48},
- {"Home, no ext or delim", LayoutDescriptor{Kind: "home"}, true, "", noExtDelimFormat,
- []string{"index.nem", "theme/index.nem", "home.nem", "theme/home.nem", "list.nem"}, 12},
- {"Home, no ext", LayoutDescriptor{Kind: "home"}, true, "", noExt,
- []string{"index.nex", "theme/index.nex", "home.nex", "theme/home.nex", "list.nex"}, 12},
- {"Page, no ext or delim", LayoutDescriptor{Kind: "page"}, true, "", noExtDelimFormat,
- []string{"_default/single.nem", "theme/_default/single.nem"}, 2},
- {"Section", LayoutDescriptor{Kind: "section", Section: "sect1"}, false, "", ampType,
+ []string{"index.html.html", "home.html.html"}, 12},
+ {"Home, french language", LayoutDescriptor{Kind: "home", Lang: "fr"}, "", ampType,
+ []string{"index.fr.amp.html"},
+ 24},
+ {"Home, no ext or delim", LayoutDescriptor{Kind: "home"}, "", noExtDelimFormat,
+ []string{"index.nem", "home.nem", "list.nem"}, 6},
+ {"Home, no ext", LayoutDescriptor{Kind: "home"}, "", noExt,
+ []string{"index.nex", "home.nex", "list.nex"}, 6},
+ {"Page, no ext or delim", LayoutDescriptor{Kind: "page"}, "", noExtDelimFormat,
+ []string{"_default/single.nem"}, 1},
+ {"Section", LayoutDescriptor{Kind: "section", Section: "sect1"}, "", ampType,
[]string{"sect1/sect1.amp.html", "sect1/section.amp.html", "sect1/list.amp.html", "sect1/sect1.html", "sect1/section.html", "sect1/list.html", "section/sect1.amp.html", "section/section.amp.html"}, 18},
- {"Section with layout", LayoutDescriptor{Kind: "section", Section: "sect1", Layout: "mylayout"}, false, "", ampType,
+ {"Section with layout", LayoutDescriptor{Kind: "section", Section: "sect1", Layout: "mylayout"}, "", ampType,
[]string{"sect1/mylayout.amp.html", "sect1/sect1.amp.html", "sect1/section.amp.html", "sect1/list.amp.html", "sect1/mylayout.html", "sect1/sect1.html"}, 24},
- {"Taxonomy", LayoutDescriptor{Kind: "taxonomy", Section: "tag"}, false, "", ampType,
+ {"Taxonomy", LayoutDescriptor{Kind: "taxonomy", Section: "tag"}, "", ampType,
[]string{"taxonomy/tag.amp.html", "taxonomy/taxonomy.amp.html", "taxonomy/list.amp.html", "taxonomy/tag.html", "taxonomy/taxonomy.html"}, 18},
- {"Taxonomy term", LayoutDescriptor{Kind: "taxonomyTerm", Section: "categories"}, false, "", ampType,
+ {"Taxonomy term", LayoutDescriptor{Kind: "taxonomyTerm", Section: "categories"}, "", ampType,
[]string{"taxonomy/categories.terms.amp.html", "taxonomy/terms.amp.html", "taxonomy/list.amp.html", "taxonomy/categories.terms.html", "taxonomy/terms.html"}, 18},
- {"Page", LayoutDescriptor{Kind: "page"}, true, "", ampType,
- []string{"_default/single.amp.html", "theme/_default/single.amp.html", "_default/single.html", "theme/_default/single.html"}, 4},
- {"Page with layout", LayoutDescriptor{Kind: "page", Layout: "mylayout"}, false, "", ampType,
+ {"Page", LayoutDescriptor{Kind: "page"}, "", ampType,
+ []string{"_default/single.amp.html", "_default/single.html"}, 2},
+ {"Page with layout", LayoutDescriptor{Kind: "page", Layout: "mylayout"}, "", ampType,
[]string{"_default/mylayout.amp.html", "_default/single.amp.html", "_default/mylayout.html", "_default/single.html"}, 4},
- {"Page with layout and type", LayoutDescriptor{Kind: "page", Layout: "mylayout", Type: "myttype"}, false, "", ampType,
+ {"Page with layout and type", LayoutDescriptor{Kind: "page", Layout: "mylayout", Type: "myttype"}, "", ampType,
[]string{"myttype/mylayout.amp.html", "myttype/single.amp.html", "myttype/mylayout.html"}, 8},
- {"Page with layout and type with subtype", LayoutDescriptor{Kind: "page", Layout: "mylayout", Type: "myttype/mysubtype"}, false, "", ampType,
+ {"Page with layout and type with subtype", LayoutDescriptor{Kind: "page", Layout: "mylayout", Type: "myttype/mysubtype"}, "", ampType,
[]string{"myttype/mysubtype/mylayout.amp.html", "myttype/mysubtype/single.amp.html", "myttype/mysubtype/mylayout.html"}, 8},
// RSS
- {"RSS Home with theme", LayoutDescriptor{Kind: "home"}, true, "", RSSFormat,
- []string{"index.rss.xml", "theme/index.rss.xml", "home.rss.xml", "theme/home.rss.xml", "rss.xml"}, 29},
- {"RSS Section", LayoutDescriptor{Kind: "section", Section: "sect1"}, false, "", RSSFormat,
+ {"RSS Home", LayoutDescriptor{Kind: "home"}, "", RSSFormat,
+ []string{"index.rss.xml", "home.rss.xml", "rss.xml"}, 15},
+ {"RSS Section", LayoutDescriptor{Kind: "section", Section: "sect1"}, "", RSSFormat,
[]string{"sect1/sect1.rss.xml", "sect1/section.rss.xml", "sect1/rss.xml", "sect1/list.rss.xml", "sect1/sect1.xml", "sect1/section.xml"}, 22},
- {"RSS Taxonomy", LayoutDescriptor{Kind: "taxonomy", Section: "tag"}, false, "", RSSFormat,
+ {"RSS Taxonomy", LayoutDescriptor{Kind: "taxonomy", Section: "tag"}, "", RSSFormat,
[]string{"taxonomy/tag.rss.xml", "taxonomy/taxonomy.rss.xml", "taxonomy/rss.xml", "taxonomy/list.rss.xml", "taxonomy/tag.xml", "taxonomy/taxonomy.xml"}, 22},
- {"RSS Taxonomy term", LayoutDescriptor{Kind: "taxonomyTerm", Section: "tag"}, false, "", RSSFormat,
+ {"RSS Taxonomy term", LayoutDescriptor{Kind: "taxonomyTerm", Section: "tag"}, "", RSSFormat,
[]string{"taxonomy/tag.terms.rss.xml", "taxonomy/terms.rss.xml", "taxonomy/rss.xml", "taxonomy/list.rss.xml", "taxonomy/tag.terms.xml"}, 22},
- {"Home plain text", LayoutDescriptor{Kind: "home"}, true, "", JSONFormat,
- []string{"_text/index.json.json", "_text/theme/index.json.json", "_text/home.json.json", "_text/theme/home.json.json"}, 24},
- {"Page plain text", LayoutDescriptor{Kind: "page"}, true, "", JSONFormat,
- []string{"_text/_default/single.json.json", "_text/theme/_default/single.json.json", "_text/_default/single.json", "_text/theme/_default/single.json"}, 4},
- {"Reserved section, shortcodes", LayoutDescriptor{Kind: "section", Section: "shortcodes", Type: "shortcodes"}, true, "", ampType,
- []string{"section/shortcodes.amp.html", "theme/section/shortcodes.amp.html"}, 24},
- {"Reserved section, partials", LayoutDescriptor{Kind: "section", Section: "partials", Type: "partials"}, true, "", ampType,
- []string{"section/partials.amp.html", "theme/section/partials.amp.html"}, 24},
+ {"Home plain text", LayoutDescriptor{Kind: "home"}, "", JSONFormat,
+ []string{"_text/index.json.json", "_text/home.json.json"}, 12},
+ {"Page plain text", LayoutDescriptor{Kind: "page"}, "", JSONFormat,
+ []string{"_text/_default/single.json.json", "_text/_default/single.json"}, 2},
+ {"Reserved section, shortcodes", LayoutDescriptor{Kind: "section", Section: "shortcodes", Type: "shortcodes"}, "", ampType,
+ []string{"section/shortcodes.amp.html"}, 12},
+ {"Reserved section, partials", LayoutDescriptor{Kind: "section", Section: "partials", Type: "partials"}, "", ampType,
+ []string{"section/partials.amp.html"}, 12},
} {
t.Run(this.name, func(t *testing.T) {
- l := NewLayoutHandler(this.hasTheme)
+ l := NewLayoutHandler()
layouts, err := l.For(this.d, this.tp)
@@ -130,11 +129,6 @@ func TestLayout(t *testing.T) {
}
- if !this.hasTheme {
- for _, layout := range layouts {
- require.NotContains(t, layout, "theme")
- }
- }
})
}
@@ -142,7 +136,7 @@ func TestLayout(t *testing.T) {
func BenchmarkLayout(b *testing.B) {
descriptor := LayoutDescriptor{Kind: "taxonomyTerm", Section: "categories"}
- l := NewLayoutHandler(false)
+ l := NewLayoutHandler()
for i := 0; i < b.N; i++ {
layouts, err := l.For(descriptor, HTMLFormat)