这是什么文章
Qiita的降价如下qiita-markdown我们正在调用的库中进行内容清理等。
由于这在 OSS 上对公众开放,因此您可以通过实现必要的实现并提交 PR 来使用您想要使用的嵌入式脚本。
在本文中,我将总结如何具体实现它。
什么是qiita-markdown
在描述实现之前,qiita-markdown我将解释什么样的图书馆。
qiita-markdown 是一个 Markdown 解析器,实际上是用来将 Qiita 的 Markdown 转换为 HTML。
您可以在 Markdown 中自由编写 HTML 脚本标签,但 Qiita 允许不特定数量的用户发布 Markdown 文章,因此为了防止发布恶意脚本,正在清理 HTML 标签。
但是,对于可以在 Qiita 中使用的脚本标签,以白名单格式跳过清理。
换句话说,如果你有一个嵌入标签要与 qiita-markdown 一起使用,你需要将该标签添加到 qiita-markdown 作为白名单。
有两个白名单:
- 可以在脚本和 iframe 标记中指定的 URL
- 可为脚本和 iframe 标记指定的属性
如果可以根据要嵌入标签的条件,将实现加入这两个白名单,就可以在Qiita中使用。 (准确的说是添加了实现后,需要发布gem → 升级Qiita中的版本,所以会有一点时间延迟)
添加嵌入标签到白名单的流程
本节介绍加入白名单的流程。
定义要添加到白名单的嵌入标签
如↑所示,在lib/qiita/markdown/embed/中定义嵌入标签。
如果您需要设置除 URL 之外的特定数据属性,请按如下所示进行设置。
将定义好的URL和HOST加入lib/qiita/markdown/transformers/filter_*.rb的URL白名单
如果您要添加的嵌入标签是iframelib/qiita/markdown/transformers/filter_iframe.rb我想添加到
如果嵌入标签是scriptlib/qiita/markdown/transformers/filter_script.rb让我们将定义的 URL HOST 添加到 .
将定义的属性添加到白名单
lib/qiita/markdown/filters/user_input_sanitizer.rb如果有您想要允许的新属性,请添加它。如果它已经被容忍了,那就没有必要去触摸它了。
写一个测试
编写测试以确保添加的白名单正常工作。
在qiita-markdownrspec我正在使用创建测试
向spec/qiita/markdown/processor_spec.rb 添加测试,如下所示。
在最后
Qiita 的 markdown 处理作为 OSS 对公众开放,所以任何人都可以添加自己想要使用的标签。
如果您发现难以使用,或者在添加处理时有任何不便,如果您能给我反馈,我会很高兴。
Dev Talk 也对公众开放,所以如果您想直接交谈,请随意说“我想交谈”!
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308628931.html