一些特殊的笔记我需要一个文档的大纲,帮助我下次浏览时快速定位,侧边栏大纲我不是很习惯用.
因此尝试写一个输出当前笔记大纲的模板. 但遇到一些困难.
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}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于