看了这位老哥的帖子想到的: 分享一个思源笔记模板功能的高级用法——工作周日报模板 - 链滴 (ld246.com)
把循环语句全部写在同一行,来控制缩进,即可输出不同层级.真是一叶障目.
之后等凑齐一波再整理到 Organized 中,比较懒.近期准备更新集市模板的朋友直接拿去用也无妨.
2021 年 9 月 22 日 20 点 30 分 更新: 解决只能在笔记本下第一层级的文档中使用的问题
.action{$docid:=.id}
.action{$docPath:=""}
.action{$tab:=" "}
.action{$line:="- "}
.action{$getdocInfo := (queryBlocks "SELECT * FROM blocks WHERE id='?' and type='d' " $docid )}
.action{range $v:= $getdocInfo}
.action{$docPath =$v.Path}
.action{end}
.action{$temp:= (splitList "/" $docPath)}
.action{$block:= (queryBlocks "SELECT * FROM blocks WHERE id !='?'AND type= 'd' AND path like '%?%' Order BY path" $docid $docid )}
- ((.action{$docid}))
.action{range $v:=$block}
.action{$a:=splitList "/" $v.Path}
.action{range $p:=$temp}.action{$a = rest $a }.action{end}
.action{range $i:= $a}.action{$tab}.action{end}.action{$line}((.action{$v.ID}))
.action{end}
实际效果
(教程文档不就是用来测试的嘛)
其他
因为我没有系统性的学习并编写过 golang 程序.模板是完全依照 sprig 提供的 API 来实现的.
下面的内容只是我几次尝试后瞎总结的,可能存在错误.
对于 package builtin 标准库中的函数,按照以下方式即可直接调用.函数名在前,参数在后.
.action{len $temp}
输出结果为2. 发完贴子才试出来,不然能写的再简单,以后再改.
而对于其他库中的函数,如 package time 中的函数,即函数前标注了 type xxx. 貌似意思是函数作为结构体成员.
调用时如下
(toDate "2006-01-02" "2021-06-28").Sub now)
Time.Sub Value
toDate "2006-01-02" "2021-06-28"
返回的是 Time 类型的变量.
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于