我正在使用 https://github.com/cbroglie/mustache 来渲染 Mustache 文件。我基本上希望这个示例能够在 go lang 中工作。但我猜自定义函数不存在。
Template:
{{#wrapped}}
{{name}} is awesome.
{{/wrapped}
}
{
"name": "Willy",
"wrapped": function() {
return function(text, render) {
return "<b>" + render(text) + "</b>"
}
}
}
输出:
威利太棒了。
基本上我想使用我的自定义函数在 go 中渲染胡子。谁能告诉我这怎么可能。
根据文档,我没有看到直接执行此操作的方法。但这是我可以做的工作。也许您可以在文档中阅读更多内容并尝试获得更好的解决方案。游乐场链接这里
package main
import (
"fmt"
"strings"
"github.com/cbroglie/mustache"
)
type CustomString string
func (s CustomString) ToLower() string {
return strings.ToLower(string(s))
}
func main() {
out, err := mustache.Render(`Hey {{#myString}}{{ToLower}}{{/myString}}`, map[string]interface{}{"myString": []CustomString{CustomString("dEF")}})
if err != nil {
panic(err)
}
fmt.Println(out)
}
有效:
游乐场链接
package main
import (
"fmt"
"github.com/cbroglie/mustache"
)
func main() {
template := `{{#wrapped}}{{name}} is awesome.{{/wrapped}}`
funcRender := func(text string, render func(text string) (string, error)) (string, error) {
text = "<b>" + text + "</b>"
return render(text)
}
output, err := mustache.Render(template, map[string]interface{}{
"name": "Noel",
"wrapped": funcRender,
})
if err != nil {
panic(err)
}
fmt.Println(output)
}