I've talked about my MediaWiki bot on this journal before. Yesterday and today I've been doing some major work on it because I've had need to use it. That's how development on this project seems to go: it sits dormant until I need to use it, and then out of frustration I have to fix things I find wrong with it.
My bot, for people who have never seen me mention it before, is an automated MediaWiki client program that operates by applying "transforms" to given pages. A transform is perl subroutine that takes text in as a parameter and returns a modified version of that text.
$newtext = transform($oldtext);
The transform itself is written in every day Perl 5 code, not any kind of fancy DSL. You've got the full power of Perl 5 applied to the text of every page in a given list. You can store multiple named transforms together into a queue and apply them all in order to the page text too.
One of the key things I added today is syntax highlighting and line numbering through the Gtk::SourceView widget. I've also done a lot of refactoring internally to try and add new languages to the transform engine eventually. The eventual goal is to be able to write transforms in other languages besides Perl 5. I'm thinking the most direct way to do that is by interfacing with Parrot::Embed, but there are plenty of other modules on CPAN too that add interfaces to other languages that could easily be used, as soon as I come up with a good plugin architecture.
The one big thing holding me back right now is adding an installer. Frankly, it's the area of perl development that I'm the worst at, and I've been unable to put together an installer for this application and the various component libraries it relies on. Documentation in this area hasn't been great in my experience, or if there is good documentation I've been unable to find it. As soon as I do get an install script working for it, I'll be able to cut the 1.0 release.
With all this work I've been doing on the bot, I haven't had much time to work on the Perl 6 book this weekend. I've got a few other projects I'm poking around on, I'm sure I'll talk about them later.