aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-02-16 19:03:01 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-02-16 19:03:01 +0100
commit2db9177a2415a351a36517beae95013b1e0c382a (patch)
tree8bc0a8dce7f060cee2a7da14231f422df2ab88f4
parentc4009c4459b8c2cd657585981ee21c553f0b4c4f (diff)
Add delete
-rw-r--r--del.go17
-rw-r--r--parse.go18
-rw-r--r--tmpl/doc8
-rw-r--r--tmpl/root7
-rw-r--r--wiki.go5
5 files changed, 48 insertions, 7 deletions
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}}
</ul>
{{end}}
+
+{{define "olist"}}
+<ol>
+ {{range .}}
+ <li>{{.}}</li>
+ {{end}}
+</ol>
+{{end}}
diff --git a/tmpl/root b/tmpl/root
index ae31e36..15e0ba7 100644
--- a/tmpl/root
+++ b/tmpl/root
@@ -18,7 +18,12 @@
<section>
<header>
<h1>{{template "title" .}}</h1>
-<nav><a href="/">root</a> <a href="/index">index</a> {{with .Title}}<a href="/edit/{{.}}">edit</a>{{end}}</nav>
+<nav>
+ <a href="/">root</a>
+ <a href="/index">index</a>
+ {{with .Title}}<a href="/edit/{{.}}">edit</a>{{end}}
+ {{with .Title}}<a href="/del/{{.}}">delete</a>{{end}}
+</nav>
</header>
{{template "content" .}}
</section>
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 {