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:
Bjørn Erik Pedersen 2018-04-23 08:41:19 +02:00
parent 3decf4a327
commit 402f6788ee
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
2 changed files with 26 additions and 1 deletions

View file

@ -451,6 +451,26 @@ func (p *Page) IsPage() bool {
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 {
Frontmatter []byte
Content []byte

View file

@ -82,6 +82,7 @@ func TestPageBundlerSiteRegular(t *testing.T) {
assert.Len(s.RegularPages, 8)
singlePage := s.getPage(KindPage, "a/1.md")
assert.Equal("", singlePage.BundleType())
assert.NotNil(singlePage)
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")
assert.NotNil(leafBundle1)
assert.Equal("leaf", leafBundle1.BundleType())
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"
// See https://github.com/gohugoio/hugo/issues/4332