hugolib: Add .Site.Sites
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 6 Dec 2018 09:29:28 +0000 (10:29 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 6 Dec 2018 13:37:25 +0000 (14:37 +0100)
Fixes #5504

hugolib/hugo_sites.go
hugolib/page.go
hugolib/site.go
hugolib/template_test.go

index 043e049d7650c7809d5695b0f373dffaaeb6a7af..0bb3b43621b3486fd39c3212a9abe071dc4ab473 100644 (file)
@@ -55,6 +55,14 @@ type HugoSites struct {
        gitInfo *gitInfo
 }
 
+func (h *HugoSites) siteInfos() SiteInfos {
+       infos := make(SiteInfos, len(h.Sites))
+       for i, site := range h.Sites {
+               infos[i] = &site.Info
+       }
+       return infos
+}
+
 func (h *HugoSites) pickOneAndLogTheRest(errors []error) error {
        if len(errors) == 0 {
                return nil
index 4c48a606143869e65d59d92a2619da35bd1937e5..81880023a4c88e60b6bd2de267194f1bb5b96281 100644 (file)
@@ -369,12 +369,7 @@ func (p *Page) Summary() template.HTML {
 
 // Sites is a convenience method to get all the Hugo sites/languages configured.
 func (p *Page) Sites() SiteInfos {
-       infos := make(SiteInfos, len(p.s.owner.Sites))
-       for i, site := range p.s.owner.Sites {
-               infos[i] = &site.Info
-       }
-
-       return infos
+       return p.s.owner.siteInfos()
 }
 
 // SearchKeywords implements the related.Document interface needed for fast page searches.
index d0e6c3018e133259fe7deddd130bb049d6ebbd13..0579edf6edfe23b1e9ce0ec49c2211ddd977c7a4 100644 (file)
@@ -424,6 +424,10 @@ func (s *SiteInfo) Hugo() hugo.Info {
        return s.hugoInfo
 }
 
+// Sites is a convenience method to get all the Hugo sites/languages configured.
+func (s *SiteInfo) Sites() SiteInfos {
+       return s.s.owner.siteInfos()
+}
 func (s *SiteInfo) String() string {
        return fmt.Sprintf("Site(%q)", s.Title)
 }
index 32ede5639f08d1db29b553f8ba68f318ac518ec5..56f5dd5ba0d438cf01c0e35f9366338e36fc845c 100644 (file)
@@ -242,6 +242,7 @@ func TestTemplateFuncs(t *testing.T) {
        b := newTestSitesBuilder(t).WithDefaultMultiSiteConfig()
 
        homeTpl := `Site: {{ site.Language.Lang }} / {{ .Site.Language.Lang }} / {{ site.BaseURL }}
+Sites: {{ site.Sites.First.Home.Language.Lang }}
 Hugo: {{ hugo.Generator }}
 `
 
@@ -252,8 +253,14 @@ Hugo: {{ hugo.Generator }}
 
        b.CreateSites().Build(BuildCfg{})
 
-       b.AssertFileContent("public/en/index.html", "Site: en / en / http://example.com/blog",
+       b.AssertFileContent("public/en/index.html",
+               "Site: en / en / http://example.com/blog",
+               "Sites: en",
                "Hugo: <meta name=\"generator\" content=\"Hugo")
-       b.AssertFileContent("public/fr/index.html", "Site: fr / fr / http://example.com/blog")
+       b.AssertFileContent("public/fr/index.html",
+               "Site: fr / fr / http://example.com/blog",
+               "Sites: en",
+               "Hugo: <meta name=\"generator\" content=\"Hugo",
+       )
 
 }