Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
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 scrutinizing the Monastery: (7)
As of 2024-03-28 12:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found