shithub: hugo

Download patch

ref: 402f6788ee955ad2aace84e8fba1625db7b356d9
parent: 3decf4a327157e98d3da3502b6d777de63437c39
author: Bjørn Erik Pedersen <[email protected]>
date: Mon Apr 23 04:41:19 EDT 2018

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

--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -451,6 +451,26 @@
 	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
--- a/hugolib/page_bundler_test.go
+++ b/hugolib/page_bundler_test.go
@@ -82,6 +82,7 @@
 				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 @@
 
 				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