ANNOUNCE: BBCode::Parser



Howdy, all.  Long-time CPAN user, first-time CPAN publisher.

I'm working on a recursive parser for BBCode markup. Unlike HTML::BBCode, it parses to syntax trees and is meant to have enough goodies for new hooks besides simple BBCode=>HTML conversion. Version 0.20 has been uploaded to CPAN and should be hitting the module list anytime.

The feature rundown:
 * Object Oriented (ooh, shiny!)

 * New Build.PL installer (requires Module::Build)

 * Lots of test cases (recently topped 100) for solid regression testing

 * Solid start at perldoc documentation, goal is 100% coverage at 1.00

 * "BBCode::Parser->parse($code)->toHTML()" is all you need to get going
   for simple things

 * Can re-emit syntax-checked BBCode using "$tag->toBBCode()"

 * Planned support for "$tag->toText()" and "$tag->toPOD()"

 * Possibly future support for multiple HTML standards
   (Currently designed around XHTML 1.0 Strict)

 * HTML "rel='nofollow'" attribute on <A> is the default, for
   Google-friendly prevention of link spam out-of-the-box

 * Rather configurable knobs for setting policy, e.g.:
     # Disable [FONT], [SIZE], [COLOR]
     $parser->forbid('FONT');
     # Allow raw HTML inside [HTML]...[/HTML]
     $parser->permit('HTML');
     # Disable images
     $parser->forbid('IMG');
     # Disable all types of external links ([URL], [IMG], [EMAIL])
     $parser->forbid(':LINK');
     # TODO: Ban [LIST BULLET=url] where [IMG=url] is forbidden
     $parser->set(allow_image_bullets => 0);
     # Allow a trusted user to post [URL=url FOLLOW=1] trusted links
     $parser->set(follow_override => 1);
     # Allow a trusted user to post trusted links by default
     $parser->set(follow_links => 1);

 * Generally intended to be secure by default

I'm writing it for a planned mod_perl2-based blog, but I thought I might as well polish it up for general consumption.

It's still under rather heavy development, so Subversion is the best way to keep up-to-date. I try to keep the trunk fairly stable by running the test suite before checkins. Development should stabilize within the next month or so.

Releases:
 <svn://chronos-tachyon.net/projects/BBCode-Parser/tags>
Development Trunk:
 <svn://chronos-tachyon.net/projects/BBCode-Parser/trunk>

Development trunk install process:
 svn co svn://chronos-tachyon.net/projects/BBCode-Parser/trunk \
  BBCode-Parser
 cd BBCode-Parser
 perl Build.PL
 ./Build
 ./Build test
 sudo ./Build install

However, if you're content waiting for them, the packages published on CPAN are PGP signed. My PGP public key is available at pgp.mit.edu and all the usual mirrors.

pub   1024D/FB3F8F3F 2005-06-21 [expires: 2010-06-20]
Key fingerprint = F1D2 5349 7D7D 3DB7 1932  442C B48F B3E8 FB3F 8F3F
uid   Donald King (CPAN Signing Key) <dlking@xxxxxxxx>
uid   Donald King (CPAN Signing Key) <donald.king@xxxxxxxxxxxxxxxxxxx>
sub   2048g/14FC1DE1 2005-06-21 [expires: 2010-06-20]

*mumbles something about Thunderbird and GPG plugins*

--
Donald King
http://chronos-tachyon.net/
.