28 lines
974 B
Go
28 lines
974 B
Go
package prompt
|
|
|
|
import "text/template"
|
|
|
|
// CompiledTemplates is the immutable parsed template set for one captured
|
|
// prompt. Callers must not mutate its templates after handing it to a renderer.
|
|
type CompiledTemplates struct {
|
|
Session *template.Template
|
|
Messages []*template.Template
|
|
}
|
|
|
|
// TemplateLookup provides parsed templates for a captured prompt identity.
|
|
type TemplateLookup interface {
|
|
GetCompiledTemplates(id, version string) (CompiledTemplates, bool)
|
|
}
|
|
|
|
// CompileTemplate checks static syntax with the same grammar and function
|
|
// names as rendering, without evaluating request inputs or variables.
|
|
func CompileTemplate(name, raw string) (*template.Template, error) {
|
|
return parseTemplate(name, raw, template.FuncMap{
|
|
"input": func(string) (string, error) { return "", nil },
|
|
})
|
|
}
|
|
|
|
func parseTemplate(name, raw string, funcs template.FuncMap) (*template.Template, error) {
|
|
return template.New(name).Funcs(funcs).Option("missingkey=error").Parse(raw)
|
|
}
|