65 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
| package tmpl
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"text/template"
 | |
| 
 | |
| 	"github.com/Masterminds/sprig/v3"
 | |
| )
 | |
| 
 | |
| func (c *Context) CreateFuncMap() template.FuncMap {
 | |
| 	aliased := template.FuncMap{}
 | |
| 
 | |
| 	aliases := map[string]string{
 | |
| 		"get": "sprigGet",
 | |
| 	}
 | |
| 
 | |
| 	funcMap := sprig.TxtFuncMap()
 | |
| 
 | |
| 	for orig, alias := range aliases {
 | |
| 		aliased[alias] = funcMap[orig]
 | |
| 	}
 | |
| 
 | |
| 	for name, f := range c.createFuncMap() {
 | |
| 		funcMap[name] = f
 | |
| 	}
 | |
| 
 | |
| 	for name, f := range aliased {
 | |
| 		funcMap[name] = f
 | |
| 	}
 | |
| 
 | |
| 	return funcMap
 | |
| }
 | |
| 
 | |
| func (c *Context) newTemplate() *template.Template {
 | |
| 	funcMap := c.CreateFuncMap()
 | |
| 
 | |
| 	tmpl := template.New("stringTemplate").Funcs(funcMap)
 | |
| 	if c.preRender {
 | |
| 		tmpl = tmpl.Option("missingkey=zero")
 | |
| 	} else {
 | |
| 		tmpl = tmpl.Option("missingkey=error")
 | |
| 	}
 | |
| 	return tmpl
 | |
| }
 | |
| 
 | |
| func (c *Context) RenderTemplateToBuffer(s string, data ...interface{}) (*bytes.Buffer, error) {
 | |
| 	var t, parseErr = c.newTemplate().Parse(s)
 | |
| 	if parseErr != nil {
 | |
| 		return nil, parseErr
 | |
| 	}
 | |
| 
 | |
| 	var tplString bytes.Buffer
 | |
| 	var d interface{}
 | |
| 	if len(data) > 0 {
 | |
| 		d = data[0]
 | |
| 	}
 | |
| 	var execErr = t.Execute(&tplString, d)
 | |
| 
 | |
| 	if execErr != nil {
 | |
| 		return &tplString, execErr
 | |
| 	}
 | |
| 
 | |
| 	return &tplString, nil
 | |
| }
 |