I uploaded Text::Hatena 0.20. It's quite new version of Text::Hatena.
I rewrote the whole code using Parse::RecDescent and Regexp::Assemble. Number of modules were reduced to 2 from 47 files. Line of codes where changed from 2600 lines to 600 lines. My benchmark marked 300-400% higher performance than ver.0.16.
I also removed some syntaxes which were specific to Hatena Diary.
Now, API for parsing text were changed too. Please be careful to upgrade your
Text::Hatena to version 0.20+.
You can use Text::Hatena simply as below.
my $html = Text::Hatena->parse($text);
And, you can extend your parser like this. You can easily make your original parser which can handle some other format.
package MyParser;
use strict;
use warnings;
use base qw(Text::Hatena);
__PACKAGE__->syntax(q|
h3 : "\n*" timestamp(?) inline(s)
timestamp : /\d{9,10}/ '*'
|);
sub h3 {
my $class = shift;
my $items = shift->{items};
my $title = $class->expand($items->[2]);
return if $title =~ /^\*/;
my $ret = "