ruby - 使用 Kramdown 渲染 span-level 字符串

标签 ruby kramdown

我知道我可以使用 ruby​​ 中的 Kramdown 解析和呈现 HTML 文档,使用类似的东西

require 'kramdown'

s = 'This is a _document_'
Kramdown::Document.new(s).to_html
# '<p>This is a <i>document</i></p>'

在这种情况下,字符串 s可能包含 Markdown 语法的完整文档。

然而,我想做的是解析 s假设它只包含 span-level markdown 语法,并获取呈现的 html。特别是不应该有 <p> , <blockquote> ,或者,例如 <table>在呈现的 html 中。

s = 'This is **only** a span-level string'
# .. ??? ...
# 'This is <b>only</b> a span-level string'

我该怎么做?

最佳答案

我会使用 sanitize gem 对输出进行后处理。

require 'sanitize'

html = Kramdown::Document.new(s).to_html
output = Sanitize.fragment(html, elements:['b','i','em'])

元素是允许标签的白名单,随便添加你想要的标签。该 gem 有一组预定义的白名单,但没有一个与您正在寻找的完全匹配。 (顺便说一句,如果您想要一个跨度中允许的所有 HTML5 元素的列表,请参阅 WHATWG's list of "phrasing content")。

我知道这没有标记 , 但为了使用 Rails 的读者的利益:使用内置的 sanitize helper .

关于ruby - 使用 Kramdown 渲染 span-level 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25140588/

相关文章:

ruby-on-rails - 亚马逊 s3 - ruby 。获取刚刚上传的资源的URL

markdown - 解析 Markdown 时保留 HTML 实体

css - Jekyll 语法高亮显示不起作用 - 未添加类

Jekyll:将 kramdown 目录放入 _include 中以进行哈希导航

ruby - 如果 gem 失败且不需要,则允许 bundle 程序继续

mysql - 创建 CSV 文件时,是否需要对某些字符进行转义?

ruby - 在使用正则表达式匹配字符串的递归下降解析器中计算行数?

ruby - 使用 watir 和 ruby​​ 的网络浏览器自动化

markdown - 如何在 jekyll 中使用 kramdown 使用编号的 LaTeX 方程

html - 页面内的 Jekyll/Kramdown 链接