写一个能解析自定义代码块的黑曜石插件 | 计算机科学论坛-380玩彩网官网入口

要求插件能解析类似下面这样的 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});
        });
    }
}

官方示例

以上是我根据官方文档的示例改造出来的,原文链接为
注意官方示例是用来解析类似 : 1 : 这样的 html 标签的,只能在阅读模式下才能看到效果。我这示例处理的是代码块,并且在编辑模式下也有效。

本作品采用《cc 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图