添加自定义函数以使用 cbroglie 在 golang 中渲染 Mustache 模板

问题描述 投票:0回答:2

我正在使用 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 中渲染胡子。谁能告诉我这怎么可能。

templates go mustache google-app-engine-golang
2个回答
1
投票

根据文档,我没有看到直接执行此操作的方法。但这是我可以做的工作。也许您可以在文档中阅读更多内容并尝试获得更好的解决方案。游乐场链接这里

    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)
    }

0
投票

有效:

游乐场链接

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.