Pod to HTML

This is a very old article. It has been imported from older blogging software, and the formatting, images, etc may have been lost. Some links may be broken. Some of the information may no longer be correct. Opinions expressed in this article may no longer be held.

OK, so there were already a thousand solutions for converting pod to HTML, but I wasn’t especially happy with any of them. Things I wanted were:

  • Clean-looking XHTML and/or HTML5 output.
  • Unicode support. ☻
  • Good syntax highlighting for Perl code samples within the pod.
  • Links to metacpan.org by default rather than search.cpan.org.

And so I’ve cobbled together a solution using Pod::Simple, PPI::HTML, HTML::HTML5::Parser, HTML::HTML5::Writer, XML::LibXML::PrettyPrint and Moo, and released it as TOBYINK::Pod::HTML.

Here’s the example from the synopsis section:

 1:     #!/usr/bin/perl
 2:     
 3:     use strict;
 4:     use warnings;
 5:     use TOBYINK::Pod::HTML;
 6:     
 7:     my $pod2html = "TOBYINK::Pod::HTML"->new(
 8:         pretty             => 1,       # nicely indented HTML
 9:         code_highlighting  => 1,       # use PPI::HTML
10:         code_line_numbers  => undef,
11:         code_styles        => {        # some CSS
12:             comment   => 'color:green',
13:             keyword   => 'font-weight:bold',
14:         }
15:     );
16:     
17:     print $pod2html->file_to_html(__FILE__);

There’s a basic command-line script pod2html-tobyink supplied with it.

Oh, and this blog post was written as pod and converted to HTML.