From ade49d8845e044292da64fcbe72a1f7ee91e66d9 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 2 Nov 2016 16:09:45 -0400 Subject: some views --- src/edit/views.go | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 62 insertions(+), 4 deletions(-) (limited to 'src/edit/views.go') diff --git a/src/edit/views.go b/src/edit/views.go index 90b6f1b..74d8006 100644 --- a/src/edit/views.go +++ b/src/edit/views.go @@ -2,16 +2,74 @@ package main import ( "io" + "mime" + "util" + "bytes" + "path" + "strings" ) +var ( + tmplPage = util.NewTemplate("got/page.html.got") + tmplViewTree = util.NewTemplate("got/view_tree.got") + tmplViewBlob = util.NewTemplate("got/view_blob.got") + tmplModified = util.NewTemplate("got/modified.got") + tmplDeleted = util.NewTemplate("got/deleted.got") +) + +func renderPage(w io.Writer, title, head, body string) error { + return tmplPage.Execute(w, map[string]string{ + "title": title, + "head": head, + "body": body, + }) +} + func renderViewTree(w io.Writer, upath string, tree GitTree) error { - // TODO - return nil + // Pre-processing + files := make(GitTree) + for name, file := range tree { + if !strings.HasPrefix(name, upath) { + continue + } + name = strings.TrimPrefix(name, upath) + if len(name) == 0 || strings.Contains(name, "/") { + continue + } + files[name] = file + + } + // Component Render + var buf bytes.Buffer + err := tmplViewTree.Execute(&buf, map[string]interface{}{ + "path": upath, + "files": files, + }) + if err != nil { + return err + } + // Page render + return renderPage(w, upath, "", buf.String()) } func renderViewBlob(w io.Writer, upath string, file GitFile) error { - // TODO - return nil + // Pre-processing + content, err := file.Cat() + if err != nil { + return err + } + // Component render + var buf bytes.Buffer + err = tmplViewBlob.Execute(&buf, map[string]string{ + "path": upath, + "ctype": mime.TypeByExtension(path.Ext(upath)), + "content": string(content), + }) + if err != nil { + return err + } + // Page render + return renderPage(w, upath, "", buf.String()) } func renderModified(w io.Writer, upath string) error { -- cgit v1.2.3