summaryrefslogtreecommitdiffstats
path: root/hugolib/page__paths.go
diff options
context:
space:
mode:
Diffstat (limited to 'hugolib/page__paths.go')
-rw-r--r--hugolib/page__paths.go74
1 files changed, 34 insertions, 40 deletions
diff --git a/hugolib/page__paths.go b/hugolib/page__paths.go
index 9a6caa05e..6e7980a6d 100644
--- a/hugolib/page__paths.go
+++ b/hugolib/page__paths.go
@@ -17,29 +17,34 @@ import (
"net/url"
"strings"
- "github.com/gohugoio/hugo/helpers"
- "github.com/gohugoio/hugo/hugofs/files"
+ "github.com/gohugoio/hugo/output"
"github.com/gohugoio/hugo/resources/kinds"
"github.com/gohugoio/hugo/resources/page"
)
-func newPagePaths(
- s *Site,
- p page.Page,
- pm *pageMeta) (pagePaths, error) {
- targetPathDescriptor, err := createTargetPathDescriptor(s, p, pm)
+func newPagePaths(ps *pageState) (pagePaths, error) {
+ s := ps.s
+ pm := ps.m
+
+ targetPathDescriptor, err := createTargetPathDescriptor(ps)
if err != nil {
return pagePaths{}, err
}
- outputFormats := pm.outputFormats()
- if len(outputFormats) == 0 {
- return pagePaths{}, nil
- }
+ var outputFormats output.Formats
+
+ if ps.m.isStandalone() {
+ outputFormats = output.Formats{ps.m.standaloneOutputFormat}
+ } else {
+ outputFormats = pm.outputFormats()
+ if len(outputFormats) == 0 {
+ return pagePaths{}, nil
+ }
- if pm.noRender() {
- outputFormats = outputFormats[:1]
+ if pm.noRender() {
+ outputFormats = outputFormats[:1]
+ }
}
pageOutputFormats := make(page.OutputFormats, len(outputFormats))
@@ -102,46 +107,35 @@ func (l pagePaths) OutputFormats() page.OutputFormats {
return l.outputFormats
}
-func createTargetPathDescriptor(s *Site, p page.Page, pm *pageMeta) (page.TargetPathDescriptor, error) {
- var (
- dir string
- baseName string
- contentBaseName string
- )
-
+func createTargetPathDescriptor(p *pageState) (page.TargetPathDescriptor, error) {
+ s := p.s
d := s.Deps
- var classifier files.ContentClass
-
- if !p.File().IsZero() {
- dir = p.File().Dir()
- baseName = p.File().TranslationBaseName()
- contentBaseName = p.File().ContentBaseName()
- classifier = p.File().FileInfo().Meta().Classifier
- }
+ pm := p.m
+ alwaysInSubDir := p.Kind() == kinds.KindSitemap
- if classifier == files.ContentClassLeaf {
- // See https://github.com/gohugoio/hugo/issues/4870
- // A leaf bundle
- dir = strings.TrimSuffix(dir, contentBaseName+helpers.FilePathSeparator)
- baseName = contentBaseName
+ pageInfoPage := p.PathInfo()
+ pageInfoCurrentSection := p.CurrentSection().PathInfo()
+ if p.s.Conf.DisablePathToLower() {
+ pageInfoPage = pageInfoPage.Unmormalized()
+ pageInfoCurrentSection = pageInfoCurrentSection.Unmormalized()
}
- alwaysInSubDir := p.Kind() == kinds.KindSitemap
-
desc := page.TargetPathDescriptor{
PathSpec: d.PathSpec,
Kind: p.Kind(),
- Sections: p.SectionsEntries(),
+ Path: pageInfoPage,
+ Section: pageInfoCurrentSection,
UglyURLs: s.h.Conf.IsUglyURLs(p.Section()),
ForcePrefix: s.h.Conf.IsMultihost() || alwaysInSubDir,
- Dir: dir,
URL: pm.urlPaths.URL,
}
if pm.Slug() != "" {
desc.BaseName = pm.Slug()
+ } else if pm.isStandalone() && pm.standaloneOutputFormat.BaseName != "" {
+ desc.BaseName = pm.standaloneOutputFormat.BaseName
} else {
- desc.BaseName = baseName
+ desc.BaseName = pageInfoPage.BaseNameNoIdentifier()
}
desc.PrefixFilePath = s.getLanguageTargetPathLang(alwaysInSubDir)
@@ -162,10 +156,10 @@ func createTargetPathDescriptor(s *Site, p page.Page, pm *pageMeta) (page.Target
desc.ExpandedPermalink = opath
- if !p.File().IsZero() {
+ if p.File() != nil {
s.Log.Debugf("Set expanded permalink path for %s %s to %#v", p.Kind(), p.File().Path(), opath)
} else {
- s.Log.Debugf("Set expanded permalink path for %s in %v to %#v", p.Kind(), desc.Sections, opath)
+ s.Log.Debugf("Set expanded permalink path for %s in %v to %#v", p.Kind(), desc.Section.Path(), opath)
}
}