0.03
No release in over 3 years
Low commit activity in last 3 years
Convert BBCode to HTML and check whether the BBCode is valid.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

Ruby-BBCode

gem version Code Coverage

This gem adds support for BBCode to Ruby. The BBCode is parsed by a parser before converted to HTML, allowing to convert nested BBCode tags in strings to their correct HTML equivalent. The parser also checks whether the BBCode is valid and gives errors for incorrect BBCode texts. Additionally, annotations can be added to the BBCode string the showing errors that are present, assuming there are any errors.

The parser recognizes all official tags and allows to easily extend this set with custom tags.

Examples

bbcode_to_html can be used to convert a BBCode string to HTML:

'This is [b]bold[/b] and this is [i]italic[/i].'.bbcode_to_html
 => 'This is <strong>bold</strong> and this is <em>italic</em>.'

bbcode_show_errors can be used to convert a BBCode to BBCode annotated with errors (assuming the original BBCode did contain errors):

'[img=no_dimensions_here]image.png[/img]'.bbcode_show_errors
 => '<span class=\'bbcode_error\' data-bbcode-errors=\'["The image parameters \'no_dimensions_here\' are incorrect, \'<width>x<height>\' excepted"]\'>[img]</span>image.png[/img]'

These HTML attributes containing the JSON representation of the errors can be used to inform the user about the problems. The following JavaScript/jQuery example makes use of the Bootstrap tooltips plugin to show the errors in tooltip popups:

$(".bbcode_error").tooltip({
  title: function() {
    var errors = JSON.parse($(this).attr('data-bbcode-errors'));
    return errors.join("\n");
  }
});

Installing

Add the following line to the Gemfile of your application:

gem 'ruby-bbcode'

Or to use the source code from the repository:

gem 'ruby-bbcode', :git => 'git://github.com/veger/ruby-bbcode.git'

Run

bundle install

And Ruby-BBCode is available in your application.

Note: Do not forget to restart your server!

Acknowledgements

A big thanks to @TheNotary for all contributions he made to this project!

Some of the ideas and the tests came from bb-ruby of Craig P Jolicoeur.

License

MIT License. See the included MIT-LICENCE file.