github.com/servernoj/jade@v0.0.0-20231225191405-efec98d19db1/example/v1.0/actions/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "html/template" 6 "io/ioutil" 7 "net/http" 8 9 "github.com/Joker/hpp" 10 "github.com/Joker/jade" 11 ) 12 13 type Person struct { 14 Name string 15 Age int 16 Emails []string 17 Jobs []*Job 18 } 19 20 type Job struct { 21 Employer string 22 Role string 23 } 24 25 func handler(w http.ResponseWriter, r *http.Request) { 26 27 buf, err := ioutil.ReadFile("template.jade") 28 if err != nil { 29 fmt.Printf("\nReadFile error: %v", err) 30 return 31 } 32 jadeTpl, err := jade.Parse("jade_tp", buf) 33 if err != nil { 34 fmt.Printf("\nParse error: %v", err) 35 return 36 } 37 fmt.Printf("%s", hpp.PrPrint(jadeTpl)) 38 39 // 40 41 job1 := Job{Employer: "Monash B", Role: "Honorary"} 42 job2 := Job{Employer: "Box Hill", Role: "Head of HE"} 43 44 person := Person{ 45 Name: "jan", 46 Age: 50, 47 Emails: []string{"jan@newmarch.name", "jan.newmarch@gmail.com"}, 48 Jobs: []*Job{&job1, &job2}, 49 } 50 51 // 52 53 goTpl, err := template.New("html").Parse(jadeTpl) 54 if err != nil { 55 fmt.Printf("\nTemplate parse error: %v", err) 56 return 57 } 58 err = goTpl.Execute(w, person) 59 if err != nil { 60 fmt.Printf("\nExecute error: %v", err) 61 return 62 } 63 } 64 65 func main() { 66 fmt.Println("open http://localhost:8080/") 67 http.HandleFunc("/", handler) 68 http.ListenAndServe(":8080", nil) 69 }