#
# perl2html.pl
#
# version 1.00, 9-25-03, michael@bizsystems.com
#
# Functions to replace the htmlify stuff removed from perl 5.8
# Lots of stuff borrowed from perl 5.6 ExtUtils
#
use vars qw(@patch_items @patch_rv);
=pod
=head2 * pf_html_check(\%writemakefileargs)
input: none
returns: true/false
If any of the vars
HTMLLIBPODS
HTMLSCRIPTPODS
INSTALLHTMLSITELIBDIR
INST_HTMLLIBDIR
appear in the WriteMakefile hash, MakeMaker is notified
not to warn about a 'non-makefile' variable.
Certain interal arrays are set so that the functions
below work properly.
=cut
sub pf_html_check {
my $need_patch = 0; # SET to "1" for DEBUG
@patch_items = qw/
HTMLLIBPODS
HTMLSCRIPTPODS
INSTALLHTMLSITELIBDIR
INST_HTMLLIBDIR
/;
@patch_rv;
foreach (@patch_items) {
my $rv = 0;
unless (exists
$ExtUtils::MakeMaker::Recognized_Att_Keys{$_} &&
$ExtUtils::MakeMaker::Recognized_Att_Keys{$_}
) {
$need_patch = 1;
$ExtUtils::MakeMaker::Recognized_Att_Keys{$_} = 1;
$rv = 1;
}
push @patch_rv, $rv;
}
print "Restoring POD2HTML conversion features\n"
if $need_patch;
$need_patch;
}
=head2 * print the results for pf_html_check
This is a debug function
=cut
sub pf_print_patch_rv {
for(0..$#patch_items) {
print "$patch_items[$_] => $patch_rv[$_]\n";
}
}
=head2 * $list_text = pf_handy_list(\%writemakefileargs);
Returns a text string containing the Makefile text for
HTMLLIBPODS
HTMLSCRIPTPODS
=cut
sub pf_handy_list {
my($self) = shift;
my $rv = '';
my %rv;
for(qw(HTMLLIBPODS HTMLSCRIPTPODS)) {
if ($self->{$_}) {
$rv .= "\n$_ = ".join(" \\\n\t", sort keys %{$self->{$_}});
}
}
for(qw(INSTALLHTMLSITELIBDIR INST_HTMLLIBDIR)) {
if ($self->{$_}) {
$rv .= "\n$_ = $self->{$_}";
}
}
$rv;
}
=head2 * $inherited = pf_psias($inherited);
Insert the HTML install stuff into pure_site_install
psias === Pure_Site_Install_After_Script
=cut
sub pf_psias { # pure_site_install_after_script
my $inherited = shift;
# $inherited =~ s/(\$\(INSTALLSCRIPT\))/$1 \\\n\t\t\$\(INST_HTMLLIBDIR\) \$\(INSTALLHTMLSITELIBDIR\)/g;
$inherited =~ s/(pure_site_install\s+::.*\n.+\n.+\n.+\n.+\n.+\n.+\n.+\n)/$1\t\t\$\(INST_HTMLLIBDIR\) \$\(INSTALLHTMLSITELIBDIR\) \\\n/;
$inherited;
}
=head2 * pf_htmlifypods(\%makefile_hash,$Config)
Defines targets and routines to translate the pods into HTML manpages
and put them into the INST_HTMLLIBDIR and INST_HTMLSCRIPTDIR
directories.
input: WriteMakefile hash,
$Config from 'use Config'
returns: text for MY::xxx subroutine
=cut
sub pf_htmlifypods {
my($self, $Config) = @_;
return "\npf_htmlifypods : pure_all\n\t\@\$(NOOP)\n" unless
%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}};
my $pod2html_exe = $Config->{scriptdirexp} .'/pod2html';
my(@m);
push @m,
qq[POD2HTML_EXE = $pod2html_exe\n],
qq[POD2HTML = \$(PERL) -we 'use File::Basename; use File::Path qw(mkpath); %m=\@ARGV;for (keys %m){' \\\n],
q[-e 'next if -e $$m{$$_} && -M $$m{$$_} < -M $$_ && -M $$m{$$_} < -M "Makefile";' \\
-e 'print "Htmlifying $$m{$$_}\n";' \\
-e '$$dir = dirname($$m{$$_}); mkpath($$dir) unless -d $$dir;' \\
-e 'system(qq[$$^X ].q["-I$(PERL_ARCHLIB)" "-I$(PERL_LIB)" $(POD2HTML_EXE) ].qq[$$_>$$m{$$_}])==0 or warn "Couldn\\047t install $$m{$$_}\n";' \\
-e 'chmod(oct($(PERM_RW))), $$m{$$_} or warn "chmod $(PERM_RW) $$m{$$_}: $$!\n";}'
];
push @m, "\npf_htmlifypods : pure_all ";
push @m, join " \\\n\t", keys %{$self->{HTMLLIBPODS}}, keys %{$self->{HTMLSCRIPTPODS}};
push(@m,"\n");
if (%{$self->{HTMLLIBPODS}} || %{$self->{HTMLSCRIPTPODS}}) {
push @m, "\t\@\$(POD2HTML) \\\n\t";
push @m, join " \\\n\t", %{$self->{HTMLLIBPODS}}, %{$self->{HTMLSCRIPTPODS}};
}
join('', @m,"\n");
}
1;