复杂的模板函数文档可见:sprig
基本关键字
sprig文档没提到的但又十分有用的基本关键字
not
lg、gt、eq
if else end
range end
注释
.action{/* 用斜杠和星号括起来的内容是注释 */}
if-else语句
结束需要用end
赋值需要用= (if语句内如果想要给外部的全局变量赋值,需要用=而不是:=,因为在golang里如果直接在if语句用:=就相当于是在创建局部变量。)
案例:给月份补0
.action{$this_year := 2021}
.action{$this_month := 7}
.action{/* 处理月份为两位整数,小于10,则为0x */}
.action{if gt $this_month 10}
.action{/* 坑:这里是=而不能是:= */}
.action{$this_month = $this_month}
.action{else}
.action{$this_month = nospace (cat "0" $this_month)}
.action{end}
.action{$this_month}
range循环语句
Title:.action{.title}
.action{/* 1.先通过sql把查询结果赋值保存到blocks变量中去 */}
.action{$blocks :=queryBlocks "SELECT * FROM blocks WHERE created >= '20210505' AND created <= '20210506' AND type !='d' AND type !='h' AND type !='i' AND root_id != '20210504004406-wc9gfh0' order by updated"}
.action{/* 2. range开始循环,把查询到的block一个个循环命名为b */}
.action{range $b := $blocks}
.action{$b.ID} | .action{$b.Path}
Type: .action{$b.Type}
Markdown: .action{$b.Markdown}
Content: .action{$b.Content}
.action{end}
.action{/* 3.循环结束 */}