gpt4 book ai didi

ruby-on-rails - 用户输入中的自定义 Markdown

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

我想在用户评论中添加一个简单的 markdown。

当用户提交评论时:

我刚得到 [card:Black Lotus] 人。战俘!

我希望它像这样显示:

我刚得到黑莲花人。战俘!

但带有额外的 html 标记:

I just got <span class="preview" data-card="/cards/card.id">Black Lotus</span> man. POW!

1) 我看了Redcarpet但不知道如何添加 [card:...] Markdown 。

2) 或者我应该只运行正则表达式并在将内容保存到数据库之前替换内容然后 sanitize(ActionView::Helpers::SanitizeHelper) span在显示评论之前标记?

最佳答案

回答我自己的问题:

定义自定义渲染器并覆盖 normal_text 方法就可以了。

class HTMLwithCards < Redcarpet::Render::HTML
def preprocess(full_document)
full_document.gsub(/\[card:(.*)\]/) do
card = Card.find_by_name($1)
if card
"<span class='preview' data-card='/cards/#{card.id}'>#{$1}</span>"
else
$1
end
end
end
end

然后你可以这样调用它:

def markdown(text)
renderer = HTMLwithCards.new(hard_wrap: true, filter_html: true)
Redcarpet::Markdown.new(renderer).render(text).html_safe
end

关于ruby-on-rails - 用户输入中的自定义 Markdown ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14741197/

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