Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Yet another POD to HTML converter

by Corion (Pope)
on Mar 12, 2005 at 09:54 UTC ( #438895=sourcecode: print w/ replies, xml ) Need Help??

Category: HTML Utility
Author/Contact Info corion@cpan.org
Description:

Thilosophy was looking for a converter of pod to HTML. I uploaded mine, which mostly generates a local HTML tree with relative internal links.

Steal the corresponding css from http://www.corion.net/perl-dev/style.css.

#!/usr/bin/perl -w
use strict;
use Pod::Simple::HTML;
use File::Find::Rule;
use File::Spec;
use File::Basename;
use File::Path;

=head1 NAME

local-doc.pl - create local documentation

=cut

my ($docdir,$bindir) = @ARGV;
my $rel_docroot = '.';

{
  no warnings 'redefine';
  sub Pod::Simple::HTML::resolve_pod_page_link {
    my ($self,$link) = @_;
    my $to = $link;
    $to =~ s!::!-!g;
    $to .= '.html';
    # warn "$rel_docroot/$to";
    return "$rel_docroot/$to";
  };
};

my @files = File::Find::Rule->file()->name(qr(^.*\.(pm|pl|pod)$))->in(
+$bindir);

for my $file (@files) {
  my $input = $file;

  my @outfile = File::Spec->splitdir( File::Spec->abs2rel( $file, $bin
+dir ));
  my $outfile = File::Spec->catfile( $docdir, join "-", @outfile );
  $outfile =~ s/\.[^.]+$/.html/;
  # print "Generating $outfile";

  my $stylesheet = "style.css";

  my $parser = Pod::Simple::HTML->new();
  my $html;
  $parser->output_string($html);
  $parser->parse_file($file);
  $html =~ s!</title>\s*</head>!</title><link rel="stylesheet" href="$
+stylesheet" /></head>!sm;

  open OUTPUT, ">", $outfile
    or die "Couldn't create '$outfile': $!";
  print OUTPUT $html;
  close OUTPUT;

  # print ", done.\n";
};

=head1 AUTHOR

Max Maischein (corion@cpan.org)

=cut

Comment on Yet another POD to HTML converter
Download Code
Re: Yet another POD to HTML converter
by dpavlin (Friar) on Mar 12, 2005 at 18:15 UTC
    Thanks for nice script. I had to change regex which adds stylesheet to:
    $html =~ s!</head>!<link rel="stylesheet" href="$stylesheet" /></head> +!sm;
    I think that this change show make it more compatibile with various html formats that Pod::Simple::HTML produce (I might have different version than you).

    2share!2flame...
Re: Yet another POD to HTML converter
by jmcnamara (Monsignor) on Mar 14, 2005 at 13:11 UTC

    With 3.xx versions of Pod::Simple and Pod::Simple::HTML you can specify the CSS source using the html_css() method:
    ... $parser->output_string($html); $parser->html_css(qq(<link rel="stylesheet" href="$stylesheet"/>)); $parser->parse_file($file); ...
    That way you don't have to do the s///.

    An alternative approach to the general problem would be to use Pod::Webserver.

    --
    John.

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://438895]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (6)
As of 2014-09-01 22:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (17 votes), past polls