gpt4 book ai didi

ruby-on-rails - 如何限制 Ruby 中的 Markdown 语法?

转载 作者:数据小太阳 更新时间:2023-10-29 06:54:04 25 4
gpt4 key购买 nike

我希望使用 Ruby 库(例如 Maraku)在 Rails CMS 评论系统中实现 Markdown。或 Kramdown .我需要限制用户可以提交哪些 Markdown 功能。在此系统中,不允许用户插入图像、html 或执行任何繁重的编辑,但强调和超链接是可以的。

本质上,我希望创建类似于 this Textile filter 的东西, 但对于 Markdown 语法。

最佳答案

在 Markdown 转换之后,我一直在使用第二个步骤来使用 sanitize gem 清理数据.它基于白名单且非常可配置,您可以轻松实现您的目标。

为了节省您的时间,这是我的文本格式化程序模块,希望对您有所帮助。内置的宽松规则对我来说有点太严格了。

module TextFormatter
require 'sanitize'

module Formatters
MARKDOWN = 1
TEXTILE = 2
end

RELAXED = {
:elements => [
'a', 'b', 'blockquote', 'br', 'caption', 'cite', 'code', 'col',
'colgroup', 'dd', 'dl', 'dt', 'em', 'i', 'img', 'li', 'ol', 'p', 'pre',
'q', 'small', 'strike', 'strong', 'sub', 'sup', 'table', 'tbody', 'td',
'tfoot', 'th', 'thead', 'tr', 'u', 'ul', 'del', 'ins', 'h1', 'h2', 'h3', 'h4', 'h5', 'h5', 'hr', 'kbd'],

:attributes => {
'a' => ['href', 'title'],
'blockquote' => ['cite'],
'col' => ['span', 'width'],
'colgroup' => ['span', 'width'],
'img' => ['align', 'alt', 'height', 'src', 'title', 'width'],
'ol' => ['start', 'type'],
'q' => ['cite'],
'table' => ['summary', 'width'],
'td' => ['abbr', 'axis', 'colspan', 'rowspan', 'width'],
'th' => ['abbr', 'axis', 'colspan', 'rowspan', 'scope',
'width'],
'ul' => ['type']
},

:protocols => {
'a' => {'href' => ['ftp', 'http', 'https', 'mailto',
:relative]},
'blockquote' => {'cite' => ['http', 'https', :relative]},
'img' => {'src' => ['http', 'https', :relative]},
'q' => {'cite' => ['http', 'https', :relative]}
}
}



def self.to_html(text, formatter = Formatters::MARKDOWN)
return "" unless text

html = case formatter
when Formatters::MARKDOWN then
RDiscount.new(text, :smart).to_html
when Formatters::TEXTILE then
RedCloth.new(text).to_html
end

Sanitize.clean(html, RELAXED)
end
end

关于ruby-on-rails - 如何限制 Ruby 中的 Markdown 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2040504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com