When you go to bb-ruby gem readme, there is an instruction how to extend it with your own translations:
my_block = {
'Quote' => [
/\[quote(:.*)?=(.*?)\](.*?)\[\/quote\1?\]/mi,
'<div class="quote"><p>\2</p><block>\3</block></div>',
'Quote with citation',
'[quote=mike]please quote me[/quote]',
:quote
],
}
text.bbcode_to_html(my_blockquote)
This method works quite good but well... it's way to inconvenient. Where should we put our translation? In our model? Should we create a different model which would store our costume translations? Nah... There is really easy and clean way to add new (and overwrite already existing) translations into a bbcode parser.
Create in your app initializers directory (/config/initializers/) a file called bb-ruby.rb. Below you can see an example with [spoiler][/spoiler] tag:
module BBRuby
if @@tags
@@tags['Spoiler'] = [
/\[spoiler\](.*?)\[\/spoiler\1?\]/mi,
'<span class="spoiler">\1</span>',
'spoiler',
'[spoiler]spoiler[/spoiler]',
:spoiler]
end
end
And how to overwrite existing translation? Just replace it with new one. Below example which replaces standard "Link" rule, with same rule but with rel="nofollow":
@@tags['Link'] = [
/\[url=(.*?)\](.*?)\[\/url\]/mi,
'<a href="\1" rel="nofollow">\2</a>',
'Hyperlink to somewhere else',
'Maybe try looking on [url=http://google.com]Google[/url]?',
:link]