aboutsummaryrefslogtreecommitdiff
path: root/wiki.go
diff options
context:
space:
mode:
Diffstat (limited to 'wiki.go')
-rw-r--r--wiki.go52
1 files changed, 26 insertions, 26 deletions
diff --git a/wiki.go b/wiki.go
index 6a7bbf9..64e1e82 100644
--- a/wiki.go
+++ b/wiki.go
@@ -1,46 +1,46 @@
package main
import (
- "html/template"
- "io/ioutil"
- "net/http"
"os"
"path"
-
- "github.com/russross/blackfriday"
)
-type Page struct {
- Title string
- Body []byte
- Pages []os.FileInfo
+type Wiki struct {
+ Root string
}
-func (p *Page) fileName() string {
- return path.Join(*data, p.Title)
+func (w Wiki) fileName(title string) string {
+ return path.Join(w.Root, title)
}
-func (p *Page) save() error {
- return ioutil.WriteFile(p.fileName(), p.Body, 0600)
+func (w Wiki) Save(p Page) error {
+ return os.WriteFile(w.fileName(p.Title), p.Body, 0600)
}
-func loadPage(title string) (p *Page, err error) {
- p = &Page{Title: title}
- p.Body, err = ioutil.ReadFile(p.fileName())
- return
+func (w Wiki) Load(title string) (Page, error) {
+ body, err := os.ReadFile(w.fileName(title))
+ return Page{Title: title, Body: body}, err
}
-func (p *Page) del() error {
- return os.Remove(p.fileName())
+func (w Wiki) Delete(title string) error {
+ return os.Remove(w.fileName(title))
}
-func (p *Page) render(w http.ResponseWriter, tmpl *template.Template) {
- err := tmpl.ExecuteTemplate(w, "root", p)
+func (w Wiki) List() ([]os.FileInfo, error) {
+ files, err := os.ReadDir(w.Root)
if err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
+ return nil, err
}
-}
-
-func (p *Page) HTML() template.HTML {
- return template.HTML(blackfriday.MarkdownCommon(p.Body))
+ var pages []os.FileInfo
+ for _, entry := range files {
+ file := entry.Name()
+ if !entry.IsDir() && file[0] != '.' {
+ info, err := entry.Info()
+ if err != nil {
+ return nil, err
+ }
+ pages = append(pages, info)
+ }
+ }
+ return pages, nil
}