mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
hugolib: Add .Page.BundleType
I eturn either: 1. leaf 2. branch 3. empty string The above sits well with constructs like: ``` {{ with .BundleType }} // Now we know it is a bundle {{ end }} ``` Fixes #4662
This commit is contained in:
parent
3decf4a327
commit
402f6788ee
2 changed files with 26 additions and 1 deletions
|
@ -451,6 +451,26 @@ func (p *Page) IsPage() bool {
|
||||||
return p.Kind == KindPage
|
return p.Kind == KindPage
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BundleType returns the bundle type: "leaf", "branch" or an empty string if it is none.
|
||||||
|
// See https://gohugo.io/content-management/page-bundles/
|
||||||
|
func (p *Page) BundleType() string {
|
||||||
|
if p.IsNode() {
|
||||||
|
return "branch"
|
||||||
|
}
|
||||||
|
|
||||||
|
var source interface{} = p.Source.File
|
||||||
|
if fi, ok := source.(*fileInfo); ok {
|
||||||
|
switch fi.bundleTp {
|
||||||
|
case bundleBranch:
|
||||||
|
return "branch"
|
||||||
|
case bundleLeaf:
|
||||||
|
return "leaf"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
type Source struct {
|
type Source struct {
|
||||||
Frontmatter []byte
|
Frontmatter []byte
|
||||||
Content []byte
|
Content []byte
|
||||||
|
|
|
@ -82,6 +82,7 @@ func TestPageBundlerSiteRegular(t *testing.T) {
|
||||||
assert.Len(s.RegularPages, 8)
|
assert.Len(s.RegularPages, 8)
|
||||||
|
|
||||||
singlePage := s.getPage(KindPage, "a/1.md")
|
singlePage := s.getPage(KindPage, "a/1.md")
|
||||||
|
assert.Equal("", singlePage.BundleType())
|
||||||
|
|
||||||
assert.NotNil(singlePage)
|
assert.NotNil(singlePage)
|
||||||
assert.Equal(singlePage, s.getPage("page", "a/1"))
|
assert.Equal(singlePage, s.getPage("page", "a/1"))
|
||||||
|
@ -105,8 +106,12 @@ func TestPageBundlerSiteRegular(t *testing.T) {
|
||||||
|
|
||||||
leafBundle1 := s.getPage(KindPage, "b/my-bundle/index.md")
|
leafBundle1 := s.getPage(KindPage, "b/my-bundle/index.md")
|
||||||
assert.NotNil(leafBundle1)
|
assert.NotNil(leafBundle1)
|
||||||
|
assert.Equal("leaf", leafBundle1.BundleType())
|
||||||
assert.Equal("b", leafBundle1.Section())
|
assert.Equal("b", leafBundle1.Section())
|
||||||
assert.NotNil(s.getPage(KindSection, "b"))
|
sectionB := s.getPage(KindSection, "b")
|
||||||
|
assert.NotNil(sectionB)
|
||||||
|
home, _ := s.Info.Home()
|
||||||
|
assert.Equal("branch", home.BundleType())
|
||||||
|
|
||||||
// This is a root bundle and should live in the "home section"
|
// This is a root bundle and should live in the "home section"
|
||||||
// See https://github.com/gohugoio/hugo/issues/4332
|
// See https://github.com/gohugoio/hugo/issues/4332
|
||||||
|
|
Loading…
Reference in a new issue