tpls

Extendable, Fast Template Engine for Go
git clone git://git.lair.cx/tpls
Log | Files | Refs | README | LICENSE

builtin_resources.go (1427B)


      1 package tplc
      2 
      3 import (
      4 	"go.lair.cx/go-core/net/htmlx"
      5 )
      6 
      7 func TagString(_ *Builder, w *Writer, t *htmlx.Tokenizer) error {
      8 	attrs := getAttrs(t)
      9 	className, _ := attrs["class"]
     10 	return handleResourceTag(t, "string", func(body []byte) {
     11 		switch className {
     12 		case "unsafe":
     13 			w.WriteRawBytes(body)
     14 
     15 		case "bytes":
     16 			w.WriteByteStringBytes(body)
     17 
     18 		default:
     19 			w.WriteStringBytes(body)
     20 		}
     21 	})
     22 }
     23 
     24 func TagInteger(_ *Builder, w *Writer, t *htmlx.Tokenizer) error {
     25 	return handleResourceTag(t, "integer", func(body []byte) {
     26 		w.WriteIntegerBytes(body)
     27 	})
     28 }
     29 
     30 func TagFloat(_ *Builder, w *Writer, t *htmlx.Tokenizer) error {
     31 	attrs := getByteAttrs(t)
     32 	className, _ := attrs["class"]
     33 
     34 	return handleResourceTag(t, "float", func(body []byte) {
     35 		w.WriteFloatBytes(body, className)
     36 	})
     37 }
     38 
     39 func TagRaw(_ *Builder, w *Writer, t *htmlx.Tokenizer) error {
     40 	return handleResourceTag(
     41 		t,
     42 		"raw",
     43 		func(body []byte) {
     44 			w.WriteGoCodeBytes(body, []byte{'\n'})
     45 		},
     46 	)
     47 }
     48 
     49 func TagTitle(_ *Builder, w *Writer, t *htmlx.Tokenizer) error {
     50 	return handleResourceTag(
     51 		t,
     52 		"title",
     53 		func(body []byte) {
     54 			w.WriteRawWithBacktick("<title>")
     55 			w.WriteGoCodeBytes(body, []byte{'\n'})
     56 			w.WriteRawWithBacktick("</title>")
     57 		},
     58 	)
     59 }
     60 
     61 func handleResourceTag(t *htmlx.Tokenizer, name string, handler func([]byte)) error {
     62 	body, err := getBodyFromTextOnlyTag(t, name, false)
     63 	if err != nil {
     64 		return err
     65 	}
     66 
     67 	handler(body)
     68 	return nil
     69 }