38 lines
946 B
Go
38 lines
946 B
Go
package ersteller
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"regexp"
|
|
"strings"
|
|
"text/template"
|
|
)
|
|
|
|
func FirstLetterToUpper(name string) string {
|
|
return strings.ToUpper(name[:1]) + name[1:]
|
|
}
|
|
|
|
func FirstLetterToLower(name string) string {
|
|
return strings.ToLower(name[:1]) + name[1:]
|
|
}
|
|
|
|
func InlineTemplate(templateString string, data any) string {
|
|
dollarRegex := regexp.MustCompile(`\$(\w+)\$`)
|
|
templateString = dollarRegex.ReplaceAllStringFunc(templateString, func(s string) string {
|
|
if strings.HasPrefix(s, "$.") || strings.HasPrefix(s, "$end") || strings.HasPrefix(s, "$else") {
|
|
return s
|
|
}
|
|
return dollarRegex.ReplaceAllString(s, "$.$1$")
|
|
})
|
|
tmpl, err := template.New("inline").Delims("$", "$").Parse(templateString)
|
|
if err != nil {
|
|
return fmt.Sprint("Failed to parse template ", err)
|
|
}
|
|
var buf bytes.Buffer
|
|
err = tmpl.Execute(&buf, data)
|
|
if err != nil {
|
|
return fmt.Sprint("Failed to execute template ", err)
|
|
}
|
|
return buf.String()
|
|
}
|