func main() { flag.Parse() if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() parse.DocParse(damsel.Open("tests/bigtable2.dmsl", "")) return } if *filename == "" { flag.Usage() return } if *pprint { parse.Pprint = true } if *debug { r, err := parse.DocParse(damsel.Open(*filename, "")) if err != nil { fmt.Println(err) } fmt.Println(r) } else { t, err := damsel.ParseFile(*filename) var d interface{} if err = json.Unmarshal([]byte(*data), &d); err != nil { if len(*data) > 0 { fmt.Println(err.Error()) } } if *html || len(*data) > 0 { r, err := damsel.NewHtmlTemplate(t).Execute(d) if err != nil { fmt.Println(err) } else { fmt.Println(r) } } else { result, err := t.Result() if err != nil { fmt.Println(err) } else { fmt.Println(result) } } } }
// Result initiates the final parse phase and returns the document as a string. func (t *Template) Result() (string, error) { r, err := parse.DocParse(t.result) if err != nil { return "", err } return r, err }
func Benchmark_parser(b *testing.B) { b.StopTimer() bytes, err := ioutil.ReadFile(filepath.Join(TestsDir, "bigtable2.dmsl")) if err != nil { b.Fatal(err) } b.StartTimer() for i := 0; i < b.N; i++ { parse.DocParse(bytes) } }
func (t *HtmlTemplate) Execute(data interface{}) (string, error) { _, err := t.Html.Parse(string(t.Dmsl.ParseResult())) if err != nil { return "", err } buf := &bytes.Buffer{} if err := t.Html.Execute(buf, data); err != nil { return "", err } r, err := parse.DocParse(buf.Bytes()) if err != nil { return "", err } return r, nil }