如何解决问:go-jira:切片未在模板中切片字符串
我尝试使用以下模板行从“ 2020-03-09T08:09:40.000 + 0000”获取日期(2020-03-09):
... [Ticket:{{- .key -}}:{{ .fields.resolution.name }}] starts {{ slice .fields.created 0 10 }} and ends {{ slice .fields.resolutiondate 0 10 }} ...
->无效用法:模板:gojira:7:62:在
文档说:
切片
slice返回将第一个参数切片后的结果 剩下的论点。因此,按照Go语法,“切片x 1 2”为x [1:2], 而“切片x”是x [:],“切片x 1”是x [1:]和“切片x 1 2 3” 是x [1:2:3]。第一个参数必须是字符串,切片或数组。
这是我与go-jira一起使用的完整模板:
@startgantt
{{ range .issues -}}
[Ticket:{{- .key -}}:{{ .fields.resolution.name }}] starts {{ slice .fields.created 0 10 }} and ends {{ slice .fields.resolutiondate 0 10 }}
[Ticket:{{- .key -}}:{{ .fields.resolution.name }}] is colored Yellow
{{ if (and .fields.customfield_11202 .fields.customfield_11203) -}}
[Planned:{{- .key -}}:{{ .fields.resolution.name }}] starts {{ .fields.customfield_11202 }} and ends {{ .fields.customfield_11203 }}
[Planned:{{- .key -}}:{{ .fields.resolution.name }}] is colored LightBlue
{{ end -}}
{{ end -}}
@endgantt
解决方法
我认为您不希望在.fields.created周围加上引号,因为您将以该字符串结尾,而不是所需的日期,因此需要解决此问题,但不应引起此错误。
这个完整的模板(进行了一些小的更改)至少在最新版本中有效:
https://play.golang.org/p/fkK8DKyj9jy
t := template.Must(template.New("").Parse(`[Ticket:{{- .key -}}:{{ .fields.resolutionname }}] starts {{ slice .fields.created 0 10 }} and ends {{ slice .fields.resolutiondate 0 10 }} `))
data := map[string]interface{}{
"key":"key","fields":map[string]string{"created":"2020-03-09T08:09:40.000+0000","resolutionname":"name","resolutiondate":"2020-03-09T08:09:40.000+0000"},}
err := t.Execute(os.Stdout,data)
您使用哪个库输出此模板,我假设使用文本/模板?
slice函数的引入是相对较新的,但是无论如何它都不会产生该错误。您确定尚未在功能映射中重新定义切片吗?这似乎是最可能的解释,因为slice函数在任何情况下都不会给出您引用的错误。
您可以单独使用一个字符串对切片函数进行简单测试吗,例如上面的play.golang.org链接,但是要使用模板?
, Go 1.13中添加了slice
函数,因此,如果您按照注释中的说明使用Go 1.10.4,则解析引擎不知道此函数。 Go-jira可能会添加一个具有该名称的函数,但是可能不支持切片字符串。
最好是升级到Go 1.13或更高版本,并且此slice
函数将准备好对您的字符串进行切片,如以下示例所示:
t := template.Must(template.New("").Parse(`{{slice . 1 3}}`))
if err := t.Execute(os.Stdout,"012345"); err != nil {
panic(err)
}
哪个输出(在Go Playground上尝试):
12
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。