一些特殊的笔记我需要一个文档的大纲,帮助我下次浏览时快速定位,侧边栏大纲我不是很习惯用.
因此尝试写一个输出当前笔记大纲的模板. 但遇到一些困难.
SQL 查询 type=h
的笔记默认输出结果默认是按照编辑历史排序的.在一般的编辑流程下完成一篇笔记后,可以使用该模板获取文档的大纲.
但如果,该文档的大纲后续被又编辑过,则会导致输出结果并不符合文档的结构.
由于 SQL 查询出的结果,并不包含块在文档中的次序,我还没想到什么解决办法.只能先凑合着用.
代码
.action{/*输出大纲*/}
.action{/*获取文档的基本信息*/}
.action{$notebox :=" "}
.action{$rootid:=.id}
.action{$tab:=" "}
.action{$firstIntType:=0}
.action{$firstHeadID:=" "}
.action{$getDocInfo:= (queryBlocks "SELECT * FROM blocks WHERE root_id='?' AND type= 'h' limit 1" $rootid)}
.action{range $v:= $getDocInfo}
.action{$Htype:=$v.SubType | replace "h" ""}
.action{$firstIntType = $Htype | atoi}
.action{end}
.action{$blocks:= (queryBlocks "SELECT * FROM blocks WHERE root_id='?' AND type= 'h' limit -1" $rootid)}
.action{range $index,$v:=$blocks}
.action{$Htype:=$v.SubType | replace "h" ""}
.action{$intType := int $Htype}
.action{if gt $intType $firstIntType}
.action{$subResult := sub $intType $firstIntType}
.action{$rangeList:=until ($subResult | int)}
.action{range $p:=$rangeList}.action{$tab}.action{end}- ((.action{$v.ID}))
.action{else}
- ((.action{$v.ID}))
.action{end}
.action{end}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于