activeperl_at_listserv.ActiveState.com:
I wrote:
>> What is the correct way to add links into perltoc.html? E.g. is
>> there a tool that builds this file, or do I just hack it with my
>> editor and/or a script?
michael higgins wrote:
>This does it:
>perl -MActivePerl::DocTools -e "ActivePerl::DocTools::WriteTOC()"
Jonathan D Johnston wrote:
> 1) Drop new HTML doc(s) in the appropriate dir(s) under Perl/html/ .
> 2) Execute the following Perl one-liner:
> perl -MActivePerl::DocTools -e "ActivePerl::DocTools::WriteTOC()"
DH wrote:
> Hi. I am PodMaster. Here's some reading material
> http://perlmonks.com/index.pl?node_id=287965
> http://perlmonks.thepen.com/287965.html
Thanks for the replies! :-)
Solution follows.
David
--
#! /usr/bin/perl -w
#######################################################################
# $Id: gen_html.pl,v 1.5 2003/09/19 01:12:33 dpchrist Exp $
#
# Perl script to generate HTML documentation for Prima 1.12 installed
# into ActivePerl 806. Run this script from the root of your unzipped
# archive tree after you have run Prima's ms_install.pl.
#
# Copyright 2003 by David Christensen <dpchrist_at_holgerdanske.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself.
#######################################################################
# uses:
#----------------------------------------------------------------------
use warnings;
use strict;
use ActivePerl::DocTools;
use File::Basename;
use File::Copy;
use File::Find;
use File::Spec::Functions qw( :ALL );
#######################################################################
# configuration variables -- change these to match your Perl
# installation:
#----------------------------------------------------------------------
##### root of installed Prima.pm and Prima::* modules -- note forward
##### slashes:
my $perl_site_lib = 'C:/Perl/site/lib';
##### root where Prima HTML documents should go -- note forward
##### slashes:
my $perl_html = 'C:/Perl/html/site/lib';
##### ActivePerl's table of contents file -- note forward slashes:
my $perl_html_perltoc = 'C:/Perl/html/perltoc.html';
##### full path to ActivePerl's pod2html utility -- note backslashes:
my $pod2html = 'C:\Perl\bin\pod2html.bat';
##### some .pm files don't have pod, and generate an empty HTML page.
##### script will unlink generated pages that are smaller than this
##### threshold:
my $empty_html_size = 500;
#######################################################################
# file-scope lexicals:
#----------------------------------------------------------------------
my $overwrite = 0;
#######################################################################
# subroutines:
#----------------------------------------------------------------------
sub gen_html
{
my $src_path = shift;
my @dirs = splitdir(dirname($src_path));
foreach my $dir (splitdir($perl_site_lib)) {
shift @dirs if $dirs[0] eq $dir;
}
my $dest_dir = catdir($perl_html, @dirs);
unless (-d $dest_dir) {
mkdir $dest_dir
or die "error making directory '$dest_dir': $!";
}
my $file = basename $src_path;
$file =~ s/pm$/html/;
my $dest_path = catfile($dest_dir, $file);
if (-f $dest_path && $overwrite !~ /^a/) {
print "file '$dest_path' already exists. ",
"Overwrite (yes|all|No|exit)? ";
$overwrite = <>;
exit(0) if $overwrite =~ /^e/i;
return unless $overwrite =~ /^y/i || $overwrite =~ /^a/i;
}
$src_path =~ s|/|\\|og;
$dest_path =~ s|/|\\|og;
my $line = "$pod2html -htmlroot=file:///$perl_html "
. "$src_path > $dest_path";
print "$line\n";
system $line and die "system error: $!";
if (-s $dest_path < $empty_html_size) {
unlink $dest_path;
}
}
#----------------------------------------------------------------------
sub wanted
{
return unless $_ =~ /\.pm$/;
gen_html($File::Find::name);
}
#######################################################################
# main script:
#----------------------------------------------------------------------
my $prima_pm = catfile($perl_site_lib, 'Prima.pm');
my $prima_dir = catdir($perl_site_lib, 'Prima');
die "This script only works under Microsoft Windows"
unless $^O =~ /MSWin32/;
die "ActivePerl not found -- install ActiveState Perl "
. "and/or check this script's configuration variables"
unless -d $perl_site_lib;
die "Prima modules not found -- install Prima "
. "and/or check this script's configuration variables"
unless -f $prima_pm
&& -d $prima_dir;
gen_html($prima_pm);
find(\&wanted, ($prima_dir));
(my $save_file = $perl_html_perltoc) =~ s|(\.html)|.sav$1|;
if (-f $save_file) {
print "file `$save_file` already exists. Overwrite (yes|Exit)?";
my $answer = <>;
exit(0) unless $answer =~ /^y/i;
}
print "copying '$perl_html_perltoc' to '$save_file'\n";
copy($perl_html_perltoc, $save_file);
print "generating new table of contents '$perl_html_perltoc'\n";
ActivePerl::DocTools::WriteTOC();
#######################################################################
Received on Fri 19 Sep 2003 - 03:15:53 CEST
This archive was generated by hypermail 2.2.0 : Sat 19 Mar 2011 - 18:35:05 CET