我如何扩展bb-ruby gem以使用扰流标签?

时间:2012-04-05 17:20:28

标签: html ruby gem libraries bbcode

我正在研究一个需要一些bbcode的小东西,而我真的需要它来使用扰流标签。我通读了关于将自己的标签添加到库中的示例,但我真的不明白它是如何工作的。我想要扰流器标签所做的就是有一个可切换按钮,可以隐藏一些文字。

1 个答案:

答案 0 :(得分:0)

对于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

我没有对这些解决方案进行过测试,但它们应该没有太大的麻烦。