From 2db9177a2415a351a36517beae95013b1e0c382a Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 16 Feb 2016 19:03:01 +0100 Subject: Add delete --- del.go | 17 +++++++++++++++++ parse.go | 18 ++++++++++++------ tmpl/doc | 8 ++++++++ tmpl/root | 7 ++++++- wiki.go | 5 +++++ 5 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 del.go diff --git a/del.go b/del.go new file mode 100644 index 0000000..a106129 --- /dev/null +++ b/del.go @@ -0,0 +1,17 @@ +package main + +import "net/http" + +func init() { + http.HandleFunc("/del/", delHandler) +} + +func delHandler(w http.ResponseWriter, r *http.Request) { + title := r.URL.Path[len("/del/"):] + p := &Page{Title: title} + if err := p.del(); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + http.Redirect(w, r, "/", http.StatusFound) +} diff --git a/parse.go b/parse.go index dd4ba3b..a6f2f3b 100644 --- a/parse.go +++ b/parse.go @@ -14,6 +14,14 @@ var ( imglink = regexp.MustCompile(`\.(jpe?g|png|gif)$`) ) +func lines(in string) []string { + li := strings.Split(in, "\r\n") + for i, l := range li { + li[i] = l[1:] + } + return li +} + func (p Page) HTML() string { buf := new(bytes.Buffer) for _, v := range strings.Split(string(p.Body), "\r\n\r\n") { @@ -35,12 +43,10 @@ func (p Page) HTML() string { switch v[0] { case ' ': doc.ExecuteTemplate(buf, "pre", v) - case '-': - lines := strings.Split(v, "\r\n") - for i, l := range lines { - lines[i] = l[1:] - } - doc.ExecuteTemplate(buf, "list", lines) + case '-', '*': + doc.ExecuteTemplate(buf, "list", lines(v)) + case '#': + doc.ExecuteTemplate(buf, "olist", lines(v)) default: doc.ExecuteTemplate(buf, "par", v) } diff --git a/tmpl/doc b/tmpl/doc index f4f1dd3..40ec1aa 100644 --- a/tmpl/doc +++ b/tmpl/doc @@ -21,3 +21,11 @@ {{end}} {{end}} + +{{define "olist"}} +
    + {{range .}} +
  1. {{.}}
  2. + {{end}} +
+{{end}} diff --git a/tmpl/root b/tmpl/root index ae31e36..15e0ba7 100644 --- a/tmpl/root +++ b/tmpl/root @@ -18,7 +18,12 @@

{{template "title" .}}

- +
{{template "content" .}}
diff --git a/wiki.go b/wiki.go index b1e4de5..6d22bba 100644 --- a/wiki.go +++ b/wiki.go @@ -3,6 +3,7 @@ package main import ( "io/ioutil" "net/http" + "os" "text/template" ) @@ -26,6 +27,10 @@ func loadPage(title string) (p *Page, err error) { return } +func (p *Page) del() error { + return os.Remove(p.fileName()) +} + func (p *Page) render(w http.ResponseWriter, tmpl *template.Template) { err := tmpl.ExecuteTemplate(w, "root", p) if err != nil { -- cgit v1.2.3