目的
导入内容后再次进行自定义格式化
具体需求
- 通过 api 对特定块 id 执行合并、取消超级块的操作
- 转换某个块类型为其他块
我想在思源中对已导入和即将导入的 obsidian md 文件进行二次格式化,以满足特定需要:在思源中对 obsidian 风味的 md 语法以及插件的私有语法的还原。
例如 callout,约等于指定 css 的超级块。导入思源后是引用块,我希望通过 api 转换引用块为段落块,然后合并为超级块。
导入内容后再次进行自定义格式化
我想在思源中对已导入和即将导入的 obsidian md 文件进行二次格式化,以满足特定需要:在思源中对 obsidian 风味的 md 语法以及插件的私有语法的还原。
例如 callout,约等于指定 css 的超级块。导入思源后是引用块,我希望通过 api 转换引用块为段落块,然后合并为超级块。
怎样实现要看你具体需求。
我这里说的是通过 dom 遍历的方法。
不过如果要用思源 api 可以通过/api/block/getChildBlocks 获取,请求参数:{id:'块 id'},不过获取结果是 markdown 格式,如果转换为 dom 可以使用 Lute 转换。
如果 SQL 查询,一般获取子块通过 path like '% 块 id%',不过这里从 dom 上看 h3 下的元素和 h3,是兄弟结点,并不是 h3 的子块,所以这里用 path 不行。至于 api 为什么可以,可能是代码中做了特殊查询吧。
root_id 是块所在文档的 id,不能用 root_id。
更多 api 可以查看这个路由 https://github.com/siyuan-note/siyuan/blob/master/kernel/api/router.go ,怎么使用可以在 github 中搜索使用示例。
没有一个 api 可以实现简单的参数传递就能实现一个块转换为另一个块的,因为每种块的格式不同。
需要多个 api 去配合实现,可以通过开发者工具里的网络进行抓包,然后进行想要的操作,看看思源是通过哪些 api 去实现的,然后模仿即可。
- 通过 api 对特定块 id 执行合并、取消超级块的操作
根据网络抓包可知,合并为超级块,则是插入一个超级块,然后删除原来的块来实现的,实际上是一个插入块 api,多个删除块 api;取消超级块则是移动超级块子块,然后删除超级块实现的,实际上是移动多个块 api 和删除一个块 api 来实现的。
- 转换某个块类型为其他块
如楼上所说是通过 updateBlock
来实现的,但要自己组装不同类型的块 dom 数据或者用 Markdown 调用 lute 转换为块 dom。建议先手动输入一个目标块,然后复制目标块 dom,然后填入相应的数据后调用更新块 api 更新即可。
总之,没有简单的实现方式,需要多个 api 组合实现。
QQ 已加。
看不懂没关系,既然有接口肯定得被使用,1 可以在 github 搜索使用的例子,2 可以通过控制台-> 网络抓包查看。
如下图,通过抓包可知,超级块就是一个普通的块,只不过数据类型是 NodeSuperBlock 而已。
去掉参数类型,把常量 Constants.ZWSP 换成 \u200b
即可。
Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。
Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。
昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。
资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。
App(应用程序,Application 的缩写)一般指手机软件。
Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。
支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。
找到自己的位置,萌新烦恼少。
Open Source, Open Mind, Open Sight, Open Future!
红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。
Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。
WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。
Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。
V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。
Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。
宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。
FlowUs.息流 个人及团队的新一代生产力工具。
让复杂的信息管理更轻松、自由、充满创意。
据说 99% 的性能瓶颈都在数据库。
前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。
好记性不如烂笔头。