写一个能解析自定义代码块的黑曜石插件 | 计算机科学论坛-大发黄金版app下载
要求插件能解析类似下面这样的 emoji 代码块,并将其中的双冒号界定的字符串替换成相应的表情符
```emoji
: 1:
: 1: 啊啊啊
:fire: 火火火的火
```
替换后的效果如下图所示
原以为这样的功能实现起来很麻烦,不料竟然没有我想象的那么难。插件的 main.ts 代码如下,竟然只有二十几行!
import {plugin} from 'obsidian';
const all_emojis: record<string, string> = {
': 1:': '👍',
':sunglasses:': '😎',
':smile:': '😄',
':heart:': '❤️', // 示例扩展
':fire:': '🔥',
};
export default class exampleplugin extends plugin {
async onload() {
this.registermarkdowncodeblockprocessor('emoji', (source, el, ctx) => {
el.empty(); // 清空原始内容
// 用正则替换所有表情符号
const updatedtext = source.replace(
/(:[a-za-z0-9_ -] :)/g,
match => all_emojis[match] ?? match // 如果找不到匹配的表情,就返回原始文本
);
el.createel('pre', {text: updatedtext});
});
}
}
官方示例
以上是我根据官方文档的示例改造出来的,原文链接为
注意官方示例是用来解析类似
这样的 html 标签的,只能在阅读模式下才能看到效果。我这示例处理的是代码块,并且在编辑模式下也有效。 : 1 :
本作品采用《cc 协议》,转载必须注明作者和本文链接