aboutsummaryrefslogtreecommitdiff
path: root/page
diff options
context:
space:
mode:
Diffstat (limited to 'page')
-rw-r--r--page/index.go3
-rw-r--r--page/page.go18
-rw-r--r--page/pagelist.go16
-rw-r--r--page/render.go2
-rw-r--r--page/time.go5
5 files changed, 32 insertions, 12 deletions
diff --git a/page/index.go b/page/index.go
index a453335..f9f2df5 100644
--- a/page/index.go
+++ b/page/index.go
@@ -1,7 +1,6 @@
package page
import (
- "fmt"
"os"
"path/filepath"
"strings"
@@ -49,7 +48,7 @@ func (p *Page) Index() (map[string]PageList, error) {
err = p2.Read()
if err != nil {
- fmt.Fprintln(os.Stderr, "Error encountered: ", err)
+ Logger.Println("Error encountered: ", err)
return err
}
diff --git a/page/page.go b/page/page.go
index 82f46f2..8b84099 100644
--- a/page/page.go
+++ b/page/page.go
@@ -25,6 +25,7 @@ package page
import (
"bufio"
"bytes"
+ "encoding/json"
"fmt"
"io"
"log"
@@ -45,6 +46,8 @@ type Page struct {
Title string
Head string
Description string
+ AuthorName string
+ AuthorEmail string
// Tags to apply to the page in question. Useful for Index()
Tags map[string]interface{}
Date *PageTime
@@ -58,10 +61,6 @@ type Page struct {
// .Global care must be taken when utilizing this functionality
var Global interface{}
-// CachePages determines whether or not the rendered page will be stored in
-// memory
-var CachePages = true
-
// CacheIndex determines whether or not the index will be cached in memory
// or rebuilt on each call
var CacheIndex = true
@@ -102,11 +101,6 @@ func (p *Page) Global() interface{} {
return Global
}
-// SetVars Will set to `nil` if provided
-func (p *Page) SetVars(vars map[string]interface{}) {
- p.Vars = vars
-}
-
// Renders a page
func (p *Page) Render(wr io.Writer) error {
if err := p.Read(); err != nil {
@@ -209,3 +203,9 @@ func (p *Page) RenderBody() (string, error) {
func (p Page) String() string {
return fmt.Sprintf("Page: %s", p.path)
}
+
+// StringDetail prints a detailed string of the page
+func (p Page) StringDetail() string {
+ b, _ := json.MarshalIndent(p, "", " ")
+ return fmt.Sprintf("Page: %s\n%s\n", p.path, b)
+}
diff --git a/page/pagelist.go b/page/pagelist.go
index a5cf844..f2140f9 100644
--- a/page/pagelist.go
+++ b/page/pagelist.go
@@ -8,6 +8,22 @@ import (
// by the date, or date reversed
type PageList []*Page
+// RemoveDateless returns two PageLists, the first with valid dates,
+// and the second without. This is useful if you need a PageList which
+// will run SortDate and SortDateReverse without issue
+func (p PageList) RemoveDateless() (PageList, PageList) {
+ with := PageList{}
+ without := PageList{}
+ for _, p := range p {
+ if p.Date != nil {
+ with = append(with, p)
+ } else {
+ without = append(without, p)
+ }
+ }
+ return with, without
+}
+
func (p PageList) SortDate() PageList {
sort.Slice(p, func(i, j int) bool {
return p[i].Time().After(p[j].Time())
diff --git a/page/render.go b/page/render.go
index 4378675..07b1b88 100644
--- a/page/render.go
+++ b/page/render.go
@@ -21,7 +21,7 @@ func Render(w http.ResponseWriter, r *http.Request,
p := NewPage(path)
if vars != nil {
- p.SetVars(vars)
+ p.Vars = vars
}
err := p.Render(w)
diff --git a/page/time.go b/page/time.go
index 958dc38..0374490 100644
--- a/page/time.go
+++ b/page/time.go
@@ -21,3 +21,8 @@ func (pt *PageTime) UnmarshalYAML(n *yaml.Node) error {
pt.Time = t
return nil
}
+
+func (pt PageTime) MarshalYAML() (interface{}, error) {
+ s := pt.Time.Format(TimeFormat)
+ return s, nil
+}