53 lines
931 B
Go
53 lines
931 B
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"text/template"
|
|
)
|
|
|
|
var tplFuncs = template.FuncMap{
|
|
"map": tplMap,
|
|
"cat": tplCat,
|
|
"join": tplJoin,
|
|
"under": tplUnder,
|
|
"varPrefix": tplVarPrefix,
|
|
"inc": tplInc,
|
|
}
|
|
|
|
func tplMap(vals ...any) (map[string]any, error) {
|
|
if len(vals)%2 != 0 {
|
|
return nil, fmt.Errorf("missing value, need one key and one value per kv pair")
|
|
}
|
|
|
|
m := make(map[string]any)
|
|
for i := 0; i < len(vals); i += 2 {
|
|
m[vals[i].(string)] = vals[i+1]
|
|
}
|
|
return m, nil
|
|
}
|
|
|
|
func tplCat(strs ...string) string {
|
|
return strings.Join(strs, "")
|
|
}
|
|
|
|
func tplJoin(strs []string, sep string) string {
|
|
return strings.Join(strs, sep)
|
|
}
|
|
|
|
func tplUnder(s string) string {
|
|
return strings.ToLower(strings.ReplaceAll(strings.ReplaceAll(s, " ", "_"), "-", "_"))
|
|
}
|
|
|
|
func tplVarPrefix(s string) string {
|
|
if s == "" {
|
|
return ""
|
|
}
|
|
|
|
return tplUnder(s) + "_"
|
|
}
|
|
|
|
func tplInc(i int) int {
|
|
return i + 1
|
|
}
|