RTE:清理导入的文档代码

我目前正在将一些内容从 Dokuwiki (dokuwiki [DokuWiki]) 迁移到 Discourse。Dokuwiki 的语法不是纯粹的 Markdown,因此需要手动编辑。我通常使用旧编辑器,因为在那里可以看到所有字符。但是,使用旧编辑器时,我会看到奇怪的“跳动效果”:当你标记一个文本块并尝试格式化它时,光标会上下跳动。通过这种方式,格式化较长的文本几乎是不可能的,因为你总是必须重新定位你的编辑窗口。这很难描述,我只能通过录屏来展示……这种效果之前在 Composer / Editor 文本框中的光标跳动 中有过描述。

RTE 编辑器没有显示这种效果。但我缺少一个选项来清理从其他系统导入的杂乱代码……

1 个赞

您能分享一下这段垃圾代码是什么样的吗?

1 个赞

迁移多少内容?几十篇、几百篇还是几千篇帖子?

如果数量不少,那么编写一个导入脚本来完成迁移可能更合适。如果数量不是那么多,那么编写一些代码来修复 markdown 可能比手动编辑更明智。(一个更疯狂的解决方案是让一个插件来处理 Dokuwiki 的编辑内容)。

数量不多,但可能足以考虑基于脚本/程序化的解决方案。棘手之处在于代码是 dokuwiki 语法 (wiki:syntax [DokuWiki]) 加上来自 bootstrap3 模板 (https://getbootstrap.com) 的增强 UI 代码。它看起来不错,但设置方式时我没有考虑内容迁移。主要问题不是 dokuwiki 语法,而是 bootstrap 的 <div> … 的内容。代码示例:

<div>&nbsp;</div> <h2 class="page-header pb-3 mb-4 mt-5">确定盘区大小</h2> <div class="level2"> <p>过滤到 ext4,有哪些可用?</p> <pre class="code"> root@tokoeka ~ # df -h -t ext4 --total Filesystem Size Used Avail Use% Mounted on /dev/mapper/pve-root 196G 39G 148G 21% / /dev/md0 486M 400M 57M 88% /boot /dev/mapper/pve-data 3.0T 560G 2.3T 20% /mnt/data /dev/mapper/pve-backup 414G 40K 393G 1% /mnt/backup total 3.6T 598G 2.8T 18% - </pre> <p>&nbsp;</p> <p>过滤到 ext4,使用了多少?</p> <pre class="code"> root@tokoeka ~ # df -h -t ext4 --output=used Used 39G 400M 560G 40K 598G </pre> <p>&nbsp;</p> </div>

是的。那是一团糟。你可能可以花点时间用 nokogiri 将其转换为 markdown。

如果您在富文本编辑器模式下粘贴具有此精确 text/html 内容的剪贴板,您将获得以下 markdown 内容:

## 确定磁盘空间
 
 筛选 ext4,有什么可用的?
 
 ```
 root@tokoeka ~ # df -h -t ext4 --total Filesystem Size Used Avail Use% Mounted on /dev/mapper/pve-root 196G 39G 148G 21% / /dev/md0 486M 400M 57M 88% /boot /dev/mapper/pve-data 3.0T 560G 2.3T 20% /mnt/data /dev/mapper/pve-backup 414G 40K 393G 1% /mnt/backup total 3.6T 598G 2.8T 18% - 
 ```
 
 
 筛选 ext4,使用了多少?
 
 ```
 root@tokoeka ~ # df -h -t ext4 --output=used Used 39G 400M 560G 40K 598G 
 ```

在我们不关心的内容(如 divclass 等)方面,它会丢失信息,但会理解 hNpre 或我们 ProseMirror schema 中定义的任何内容。该 schema 尊重我们 各种编辑器扩展 注册的 parseDOM 定义,ProseMirror 的解析器会使用这些定义,包括来自主题组件或插件的定义。

关于原始问题:

我认为当富文本编辑器加载文档时,它不再是相同的 HTML 了,对吗?

因为包含 HTML 块的帖子的 raw 内容应该被渲染为“直通”代码编辑器节点:

然后可以像在 Markdown 模式下一样编辑它。

1 个赞