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  }