【问题标题】:How would I extend the bb-ruby gem to work with spoiler tags?我将如何扩展 bb-ruby gem 以使用扰流板标签?
【发布时间】:2012-04-19 10:57:35
【问题描述】:

我正在做一个需要一些 bbcode 的小东西,我真的需要它有剧透标签。我通读了将我自己的标签添加到库中的示例,但我并不真正了解它是如何工作的。我想要剧透标签做的只是有一个可切换的按钮来隐藏一些文本。

【问题讨论】:

  • fork repo,编辑lib/中的主要ruby源代码?
  • link 这是我尝试过的另一个库,但它也不支持剧透。
  • 问题是我不明白扩展是如何工作的,我也不知道足够多的 html 来使它工作。

标签: html ruby gem libraries bbcode


【解决方案1】:

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

我没有测试过这些解决方案,但它们应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多