Exemplo n.º 1
0
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)
			}
		}
	}
}
Exemplo n.º 2
0
// 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
}
Exemplo n.º 3
0
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)
	}
}
Exemplo n.º 4
0
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
}