ruby-on-rails - Markdown 渲染换行符
问题描述
我正在开发一个项目并为用户提供创建帖子的可能性。加载 Post 时,我调用markdown方法来提取链接并格式化文本。
现在我有一个问题。通过写“1. Example”,帖子中的输出是一个列表。只需编写“1.Example”_ 在点和文本之间没有空格,它就可以正常工作。我的降价方法:
@preview = nil
options = {
autolink: true,
hard_wrap: true
}
begin
URI.extract(text, ['http', 'https', 'www']).each do |uri|
unless text.include?("<a")
text = text.gsub( uri, "<a href=\"#{uri}\" target=\"_blank\">#{uri}</a>" )
@preview = LinkThumbnailer.generate(uri)
end
end
rescue OpenSSL::SSL::SSLError => e
end
renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer)
markdown.render(text).html_safe
你知道如何解决它..我不想要列表,我只希望输出与输入相同!
感谢您的时间!
解决方案
默认情况下,您将获得列表。Markdown 毕竟是在寻找它识别的语法以生成标记。
为了跳过特定的降价功能,我认为您需要提供自己的自定义渲染器。
如果你定义一个新的渲染器:
class NoListRenderer < Redcarpet::Render::HTML
def list(contents, list_type)
contents
end
def list_item(text, list_type)
text
end
end
并在创建实例时使用该实例而不是默认渲染器类,markdown
它应该跳过默认列表处理。(注意。我没有测试过这段代码):
renderer = NoListRenderer.new(options)
markdown = Redcarpet::Markdown.new(renderer)
推荐阅读
- css - Material-UI:DataGrid 滚动条未呈现
- javascript - 在 Next.js 中将道具从 Document 发送到 NextApp 组件
- python-3.x - 如何让 python discord bot 发送实时 GIF
- python - 从 scikit-image 中提取特征周长坐标
- android - 错误:ENOENT:运行 Ionic Cordova Platform Add Android 时没有这样的文件或目录
- html - 我应该在我的手机上遵循 Dreamweavers 设备预览布局还是在相同的屏幕尺寸下预览 Chrome,因为它们的外观非常不同?
- java - JDK16 ZGC启动时出现问题
- python - 在python中开始没有按预期返回
- reactjs - 如何使用 RTL 对具有复杂 reducer 的组件进行集成测试?
- android - bitmapDrawable.getBitmap() 返回 null