对于 bb-ruby,当您调用 bbcode_to_html 作为第一个参数时,您似乎可以发送自己的标签定义......所以:
"Your string with [spoiler]spoiler[/spoiler]".bbcode_to_html(my_spoiler)
my_spoiler 是:
my_spoiler = {
'Spoiler' => [
/\[spoiler\](.*?)\[\/spoiler\]/mi, # regex to match spoiler
'<div class="spoiler"><a>Show Spoiler</a><p>\1</p></div>', # what to output, change this if needed
'Spoiler text', # description
'[spoiler]this is a spoiler[/spoiler]', # sample
:spoiler # actual tag used
]
}
您需要将输出更改为您需要的内容,并且还需要在 jQuery 中使用 javascript 来显示剧透:
$('.spoiler').each(function () {
$(this).find('p').hide();
$(this).find('a').click(function () {
$(this).find('p').toggle();
});
});
我注意到您说您也尝试过 bbcoder,因为我是作者,所以我也会发布如何做到这一点。对于 bbcoder,您需要在应用程序初始化或开始解析实际字符串之前添加类似内容:
BBCoder.configure do
tag :spoiler do
<<-EOS
<div class="spoiler">
<a>Show Spoiler</a>
<p>#{content}</p>
</div>
EOS
end
end
在你配置好 BBCoder 之后,你就可以开始了,它会从那时起知道剧透标签并为你解析它,所以你只需要这样做
"My [spoiler]spoiler string[/spoiler]".bbcode_to_html
我没有测试过这些解决方案,但它们应该可以正常工作。