Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Yet another POD to HTML converter

by Corion (Patriarch)
on Mar 12, 2005 at 09:54 UTC ( [id://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
Replies are listed 'Best First'.
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.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (5)
As of 2024-03-19 09:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found