Skip to content
This repository was archived by the owner on Feb 4, 2025. It is now read-only.

veger/ruby-bbcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0b9ea50 · Feb 7, 2019
Feb 7, 2019
Apr 10, 2017
Feb 7, 2019
Feb 7, 2019
Feb 7, 2019
Apr 8, 2013
Feb 7, 2019
Jan 8, 2010
Jan 15, 2017
Oct 10, 2014
Feb 7, 2019

Repository files navigation

Ruby-BBCode

gem version Build Status 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.