2012-04-05 44 views
0

我正在研究一些需要一些bbcode的小東西,而且我真的需要它有擾流標籤。我通讀了關於將自己的標籤添加到庫中的示例,但我並不真正瞭解它是如何工作的。我想讓劇透標籤做的是有一個可切換的按鈕,它隱藏了一些文本。如何擴展bb-ruby gem以使用擾流板標籤?

+0

分叉回購,編輯'lib /'中的主ruby源代碼? – element119 2012-04-05 17:22:07

+0

[鏈接](http://rubydoc.info/gems/bbcoder/0.2.0/frames)這是我試過的另一個庫,但它也不支持破壞者。 – RangerMauve 2012-04-05 17:22:20

+1

問題是我不明白擴展如何工作,而且我不知道足夠的html來使其工作。 – RangerMauve 2012-04-05 17:22:55

回答

0

對於BB-紅寶石看起來你可以將自己的標籤定義,當你調用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 
    ] 
} 

你將需要改變輸出到你需要的東西,也有JavaScript來顯示擾流器,所以在jQuery中:

$('.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 

我沒有測試這些解決方案,但他們應該不會引起大驚小怪工作。