如何在任何缩进级别放置具有多行输出的go-template动作?

时间:2017-09-06 03:51:22

标签: go-templates

我们正在使用go-templates创建yaml。在它们中,我们有多行输出的动作,需要在特定的缩进级别缩进。我们可以使用indent函数,但它不会以不同方式处理第一行,因此要求操作定义没有缩进级别。

例如:

foo:
  bar:
    baz:
{{ myYamlOutputtingAction | indent 11 }} # <-- notice 0 indent level

有没有办法可以将我的动作定义放在缩进级别,这对于模板的上下文有意义?

1 个答案:

答案 0 :(得分:3)

(在线搜索的时间超过了我想承认的时间,我无法在任何地方找到这样做。在考虑了一分钟后,答案显而易见,但我想保存下一个人的某个时间。)

你可以改变这个:

foo:
  bar:
    baz:
{{ myYamlOutputtingAction | indent 11 }} # <-- notice 0 indent level

对此:

foo:
  bar:
    baz:
     {{- "\n"}}{{ myYamlOutputtingAction | indent 11 }} # <-- properly indented with a little bit fluff

一点解释

这可以确保{{- "\n"}}有0缩进后的任何内容。这意味着只要有意义,你就可以交换一个hacky {{- "\n"}}进行适当的缩进。我们通常认为这是值得的。