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 }