X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=installhtml;h=919346a86be1981f692ea22f1338e622489cfda7;hb=9d1ce744c6b1f6545853185bcc1688e9343cccff;hp=4bbaba9f0de157ab17b90b6e8fe5c76f31840140;hpb=7c82de66cbf5ee61be1c86c3c35fa10f7cc6d075;p=p5sagit%2Fp5-mst-13.2.git diff --git a/installhtml b/installhtml index 4bbaba9..919346a 100755 --- a/installhtml +++ b/installhtml @@ -6,7 +6,7 @@ use strict; use Config; # for config options in the makefile use Getopt::Long; # for command-line parsing use Cwd; -use Pod::Html; +use Pod::Html 'anchorify'; =head1 NAME @@ -167,12 +167,10 @@ usage("") unless @ARGV; # See vms/descrip_mms.template -> descrip.mms for invokation. if ( $^O eq 'VMS' ) { @ARGV = split(/\s+/,$ARGV[0]); } -use vars qw($opt_htmldir $opt_htmlroot $opt_podroot $opt_splitpod - $opt_verbose $opt_help $opt_podpath $opt_splithead $opt_splititem - $opt_libpods $opt_recurse); +use vars qw( %Options ); # parse the command-line -my $result = GetOptions( qw( +my $result = GetOptions( \%Options, qw( help podpath=s podroot=s @@ -229,6 +227,7 @@ foreach my $dir (@splititem) { } foreach my $dir (@splithead) { + (my $pod = $dir) =~ s,^.*/,,; $dir .= ".pod" unless $dir =~ /(\.pod|\.pm)$/; # let pod2html create the file runpod2html($dir, 1); @@ -245,15 +244,15 @@ foreach my $dir (@splithead) { $/ = ""; my @data = (); while () { - last if /NAME=/; - $_ =~ s{HREF="#(.*)">}{ - my $url = "$file/$1.html" ; - $url = Pod::Html::relativize_url( $url, "$file.html" ) - if ( ! defined $opt_htmlroot || $opt_htmlroot eq '' ) ; - "HREF=\"$url\">" ; - }eg; + last if /name="name"/i; + $_ =~ s{href="#(.*)">}{ + my $url = "$pod/$1.html" ; + $url = Pod::Html::relativize_url( $url, "$file.html" ) + if ( ! defined $Options{htmlroot} || $Options{htmlroot} eq '' ); + "href=\"$url\">" ; + }egi; push @data, $_; - } + } close(H); # now rewrite the file @@ -273,24 +272,24 @@ sub usage { sub parse_command_line { - usage() if defined $opt_help; - $opt_help = ""; # make -w shut up + usage() if defined $Options{help}; + $Options{help} = ""; # make -w shut up # list of directories - @podpath = split(":", $opt_podpath) if defined $opt_podpath; + @podpath = split(":", $Options{podpath}) if defined $Options{podpath}; # lists of files - @splithead = split(",", $opt_splithead) if defined $opt_splithead; - @splititem = split(",", $opt_splititem) if defined $opt_splititem; - @libpods = split(",", $opt_libpods) if defined $opt_libpods; + @splithead = split(",", $Options{splithead}) if defined $Options{splithead}; + @splititem = split(",", $Options{splititem}) if defined $Options{splititem}; + @libpods = split(",", $Options{libpods}) if defined $Options{libpods}; - $htmldir = $opt_htmldir if defined $opt_htmldir; - $htmlroot = $opt_htmlroot if defined $opt_htmlroot; - $podroot = $opt_podroot if defined $opt_podroot; - $splitpod = $opt_splitpod if defined $opt_splitpod; + $htmldir = $Options{htmldir} if defined $Options{htmldir}; + $htmlroot = $Options{htmlroot} if defined $Options{htmlroot}; + $podroot = $Options{podroot} if defined $Options{podroot}; + $splitpod = $Options{splitpod} if defined $Options{splitpod}; - $recurse = $opt_recurse if defined $opt_recurse; - $verbose = $opt_verbose if defined $opt_verbose; + $recurse = $Options{recurse} if defined $Options{recurse}; + $verbose = $Options{verbose} if defined $Options{verbose}; } @@ -305,6 +304,7 @@ sub absolute_path { sub create_index { my($html, $dir) = @_; + (my $pod = $dir) =~ s,^.*/,,; my(@files, @filedata, @index, $file); my($lcp1,$lcp2); @@ -330,20 +330,21 @@ sub create_index { close(IN); # pull out the NAME section - my $name; - ($name) = grep(/NAME=/, @filedata); - ($lcp1,$lcp2) = ($name =~ m,/H1>\s(\S+)\s[\s-]*(.*?)\s*$,sm); - if (defined $lcp1 and $lcp1 eq '

') { # Uninteresting. Try again. - ($lcp1,$lcp2) = ($name =~ m,/H1>\s

\s(\S+)\s[\s-]*(.*?)\s*$,sm); + my $name; + ($name) = grep(/name="name"/i, @filedata); + ($lcp1,$lcp2) = ($name =~ m,/H1>\s(\S+)\s[\s-]*(.*?)\s*$,smi); + if (defined $lcp1 and $lcp1 =~ m,^

$,i) { # Uninteresting. Try again. + ($lcp1,$lcp2) = ($name =~ m,/H1>\s

\s*(\S+)\s[\s-]*(.*?)\s*$,smi); } - my $url= "$dir/$file" ; - if ( ! defined $opt_htmlroot || $opt_htmlroot eq '' ) { - $url = Pod::Html::relativize_url( "$dir/$file", $html ) ; + my $url= "$pod/$file" ; + if ( ! defined $Options{htmlroot} || $Options{htmlroot} eq '' ) { + $url = Pod::Html::relativize_url( "$pod/$file", $html ) ; } - print HTML qq(); - print HTML "

$lcp1
$lcp2\n" if defined $lcp1; -# print HTML qq($lcp1
\n") if defined $lcp1; + if (defined $lcp1) { + print HTML qq(
); + print HTML "$lcp1
$lcp2
\n"; + } next; @@ -352,7 +353,6 @@ sub create_index { for (@index) { s/(\s*\s*)/$lcp2/s; s,#,$dir/$file#,g; - # print HTML "$_\n"; print HTML "$_\n


\n"; } } @@ -371,7 +371,7 @@ sub split_on_head { foreach $pod (@splithead) { # figure out the directory name and filename $pod =~ s,^([^/]*)$,/$1,; - $pod =~ m,(.*?)/(.*?)(\.pod)?$,; + $pod =~ m,(.*)/(.*?)(\.pod)?$,; $dirname = $1; $filename = "$2.pod"; @@ -391,11 +391,11 @@ sub split_on_item { print "splitting files by item.\n" if $verbose && $#splititem >= 0; $pwd = getcwd(); - my $splitter = absolute_path($pwd, "$splitpod/splitpod"); + my $splitter = absolute_path($pwd, "$splitpod/splitpod"); foreach my $pod (@splititem) { # figure out the directory to split into $pod =~ s,^([^/]*)$,/$1,; - $pod =~ m,(.*?)/(.*?)(\.pod)?$,; + $pod =~ m,(.*)/(.*?)(\.pod)?$,; $dirname = "$1/$2"; $filename = "$2.pod"; @@ -412,7 +412,7 @@ sub split_on_item { die "$0: error changing to directory $podroot/$dirname: $!\n"; die "$splitter not found. Use '-splitpod dir' option.\n" unless -f $splitter; - system("perl", $splitter, "../$filename") && + system($^X, $splitter, "../$filename") && warn "$0: error running '$splitter ../$filename'" ." from $podroot/$dirname"; } @@ -454,7 +454,7 @@ sub splitpod { # L<> links as necessary. my %heads = (); foreach $i (0..$#poddata) { - $heads{htmlize($1)} = 1 if $poddata[$i] =~ /=head[1-6]\s+(.*)/; + $heads{anchorify($1)} = 1 if $poddata[$i] =~ /=head[1-6]\s+(.*)/; } # create a directory of a similar name and store all the @@ -486,15 +486,15 @@ sub splitpod { # determine an appropriate filename (this must correspond with # what pod2html will try and guess) # $poddata[$i] =~ /^\s*=head[1-6]\s+(.*)/; - $file = "$dir/" . htmlize($section) . ".pod"; + $file = "$dir/" . anchorify($section) . ".pod"; # create the new .pod file print "\tcreating $poddir/$file\n" if $verbose; open(SPLITOUT, ">$poddir/$file") || die "$0: error opening $poddir/$file for output: $!\n"; $poddata[$i] =~ s,L<([^<>]*)>, - defined $heads{htmlize($1)} ? "L<$dir/$1>" : "L<$1>" - ,ge; + defined $heads{anchorify($1)} ? "L<$dir/$1>" : "L<$1>" + ,ge; print SPLITOUT $poddata[$i]."\n\n"; print SPLITOUT "=over 4\n\n"; print SPLITOUT "=item *\n\nBack to L<$dir/\"$prevsec\">\n\n" if $prevsec; @@ -552,7 +552,7 @@ sub installdir { next if grep($_ eq "$podroot/$pod.pod", @$ignore); # check if a .pm files exists too - if (grep($_ eq "$pod.pm", @pmlist)) { + if (grep($_ eq $pod, @pmlist)) { print "$0: Warning both `$podroot/$pod.pod' and " . "`$podroot/$pod.pm' exist, using pod\n"; push(@ignore, "$pod.pm"); @@ -594,9 +594,7 @@ sub runpod2html { # invoke pod2html print "$podroot/$pod => $htmldir/$html\n" if $verbose; -#system("./pod2html", - Pod::Html'pod2html( - #Pod::Html'pod2html($pod2html, + Pod::Html::pod2html( "--htmldir=$htmldir", "--htmlroot=$htmlroot", "--podpath=".join(":", @podpath), @@ -608,5 +606,3 @@ sub runpod2html { "--infile=$podroot/$pod", "--outfile=$htmldir/$html"); die "$0: error running $pod2html: $!\n" if $?; } - -sub htmlize { htmlify(0, @_) }