48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"html/template"
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
type Page struct {
|
|
Title string
|
|
MenuItems []string
|
|
Posts []Post
|
|
}
|
|
|
|
var name string = "takunomi"
|
|
var posts []Post
|
|
var sections = []string {"about","past", "contact"}
|
|
var templates = template.Must(template.ParseFiles("blog.tmpl", "blog_roll.tmpl", "style.tmpl", "post.tmpl"))
|
|
|
|
func main() {
|
|
http.HandleFunc("/", blogHandler)
|
|
http.HandleFunc("/post/", postHandler)
|
|
http.ListenAndServe(":8080", nil)
|
|
}
|
|
|
|
func blogHandler(w http.ResponseWriter, req *http.Request) {
|
|
posts = getNewestPosts(3)
|
|
page := Page {name, sections, posts}
|
|
renderTemplates(w, page)
|
|
}
|
|
|
|
func postHandler (w http.ResponseWriter, r *http.Request) {
|
|
title := strings.TrimPrefix(r.URL.Path, "/post/")
|
|
posts := []Post{getPostByURLTitle(title)}
|
|
page := Page {name, sections, posts}
|
|
renderTemplates(w, page)
|
|
}
|
|
|
|
func renderTemplates (w http.ResponseWriter, p Page) {
|
|
s1 := templates.Lookup("blog.tmpl")
|
|
s1.ExecuteTemplate(w, "blog", p)
|
|
s2 := templates.Lookup("blog_roll.tmpl")
|
|
s2.ExecuteTemplate(w, "blog_roll", nil)
|
|
s3 := templates.Lookup("post.tmpl")
|
|
s3.ExecuteTemplate(w, "post", nil)
|
|
}
|
|
|