summaryrefslogtreecommitdiffstats
path: root/resources/page/site.go
diff options
context:
space:
mode:
Diffstat (limited to 'resources/page/site.go')
-rw-r--r--resources/page/site.go53
1 files changed, 53 insertions, 0 deletions
diff --git a/resources/page/site.go b/resources/page/site.go
new file mode 100644
index 000000000..25df063f1
--- /dev/null
+++ b/resources/page/site.go
@@ -0,0 +1,53 @@
+// Copyright 2019 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package page
+
+import (
+ "html/template"
+ "time"
+
+ "github.com/gohugoio/hugo/common/hugo"
+ "github.com/gohugoio/hugo/langs"
+ "github.com/gohugoio/hugo/navigation"
+)
+
+// Site represents a site in the build. This is currently a very narrow interface,
+// but the actual implementation will be richer, see hugolib.SiteInfo.
+type Site interface {
+ Language() *langs.Language
+ RegularPages() Pages
+ Pages() Pages
+ IsServer() bool
+ ServerPort() int
+ Title() string
+ Sites() Sites
+ Hugo() hugo.Info
+ BaseURL() template.URL
+ Taxonomies() interface{}
+ LastChange() time.Time
+ Menus() navigation.Menus
+ Params() map[string]interface{}
+ Data() map[string]interface{}
+}
+
+// Sites represents an ordered list of sites (languages).
+type Sites []Site
+
+// First is a convenience method to get the first Site, i.e. the main language.
+func (s Sites) First() Site {
+ if len(s) == 0 {
+ return nil
+ }
+ return s[0]
+}