aboutsummaryrefslogtreecommitdiffstats
path: root/archive/archive.go
diff options
context:
space:
mode:
Diffstat (limited to 'archive/archive.go')
-rw-r--r--archive/archive.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/archive/archive.go b/archive/archive.go
new file mode 100644
index 0000000..ce1b45e
--- /dev/null
+++ b/archive/archive.go
@@ -0,0 +1,51 @@
+package archive
+
+import (
+ "snkt/config"
+ "snkt/post"
+ "snkt/render"
+ "path"
+)
+
+var archiveTmplName = "archive"
+var archiveName = "archive.html"
+
+/*
+ListArchive
+*/
+type ListArchive struct {
+ Posts post.Posts
+ Tgt string
+ Template string
+
+ Site interface{}
+}
+
+func NewListArchive(posts post.Posts) *ListArchive {
+ la := ListArchive{ Posts: posts }
+ return &la
+}
+
+func (a ListArchive) Target() string {
+ if a.Tgt == "" {
+ a.Tgt = path.Join(config.Config.HtmlDir, archiveName)
+ }
+ return a.Tgt
+}
+
+func (a ListArchive) Render() []byte {
+ if a.Template == "" {
+ a.Template = archiveTmplName
+ }
+ return render.Render(a.Template, a)
+}
+
+
+/*
+NewRssArchive takes posts and returns an archive ready for RSS output
+*/
+func NewRssArchive(posts post.Posts) *ListArchive {
+ ra := ListArchive{ Posts: posts, Template: "rss" }
+ ra.Tgt = path.Join(config.Config.HtmlDir, "rss.xml")
+ return &ra
+}