diff options
| author | Mitchell Riedstra <mitch@riedstra.dev> | 2021-07-12 23:08:58 -0400 |
|---|---|---|
| committer | Mitchell Riedstra <mitch@riedstra.dev> | 2021-07-12 23:18:44 -0400 |
| commit | 904e37a88a6a2eab3919f7f2c40bbb2c07544a7c (patch) | |
| tree | 07ec38801bf572a2933d51d272fc4cd3ab74b61c /page | |
| parent | e6d53f71c9718ecdb9fde16a924d75a71aadd2d2 (diff) | |
| download | go-website-904e37a88a6a2eab3919f7f2c40bbb2c07544a7c.tar.gz go-website-904e37a88a6a2eab3919f7f2c40bbb2c07544a7c.tar.xz | |
Add atom feed to the go website
Diffstat (limited to 'page')
| -rw-r--r-- | page/index.go | 3 | ||||
| -rw-r--r-- | page/page.go | 18 | ||||
| -rw-r--r-- | page/pagelist.go | 16 | ||||
| -rw-r--r-- | page/render.go | 2 | ||||
| -rw-r--r-- | page/time.go | 5 |
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 +} |
