X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fpod2man.PL;h=bd4dd418fd163f2ceb568903df1d24005f0931a0;hb=69cddaa00596e831c0492189df41823d75a1b069;hp=5d1e193a345977782a30ee5c59ea82e56e160b27;hpb=44a8e56aa037ed0f03f0506f6f85f5ed290c78e1;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/pod2man.PL b/pod/pod2man.PL index 5d1e193..bd4dd41 100644 --- a/pod/pod2man.PL +++ b/pod/pod2man.PL @@ -8,12 +8,14 @@ use File::Basename qw(&basename &dirname); # have to mention them as if they were shell variables, not # %Config entries. Thus you write # $startperl +# $man3ext # to ensure Configure will look for $Config{startperl}. # This forces PL files to create target in same directory as PL file. # This is so that make depend always knows where to find PL derivatives. chdir dirname($0); $file = basename($0, '.PL'); +$file .= '.com' if $^O eq 'VMS'; open OUT,">$file" or die "Can't create $file: $!"; @@ -26,6 +28,8 @@ print OUT <<"!GROK!THIS!"; $Config{startperl} eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' if \$running_under_some_shell; + +\$DEF_PM_SECTION = '$Config{man3ext}' || '3'; !GROK!THIS! # In the following, perl variables are not expanded during extraction. @@ -45,6 +49,7 @@ B [ B<--date=>I ] [ B<--fixed=>I ] [ B<--official> ] +[ B<--lax> ] I =head1 DESCRIPTION @@ -104,6 +109,10 @@ best if you put your Perl man pages in a separate tree, like F. By default, section 1 will be used unless the file ends in F<.pm> in which case section 3 will be selected. +=item lax + +Don't complain when required sections aren't present. + =back =head1 Anatomy of a Proper Man Page @@ -328,6 +337,7 @@ $DEF_SECTION = 1; $DEF_CENTER = "User Contributed Perl Documentation"; $STD_CENTER = "Perl Programmers Reference Guide"; $DEF_FIXED = 'CW'; +$DEF_LAX = 0; sub usage { warn "$0: @_\n" if @_; @@ -340,6 +350,7 @@ Options are: --date=string (default "$DEF_DATE") --fixed=font (default "$DEF_FIXED") --official (default NOT) + --lax (default NOT) EOF } @@ -350,6 +361,7 @@ $uok = GetOptions( qw( date=s fixed=s official + lax help)); $DEF_DATE = makedate((stat($ARGV[0]))[9] || time()); @@ -358,9 +370,11 @@ usage("Usage error!") unless $uok; usage() if $opt_help; usage("Need one and only one podpage argument") unless @ARGV == 1; -$section = $opt_section || ($ARGV[0] =~ /\.pm$/ ? 3 : $DEF_SECTION); +$section = $opt_section || ($ARGV[0] =~ /\.pm$/ + ? $DEF_PM_SECTION : $DEF_SECTION); $RP = $opt_release || $DEF_RELEASE; $center = $opt_center || ($opt_official ? $STD_CENTER : $DEF_CENTER); +$lax = $opt_lax || $DEF_LAX; $CFont = $opt_fixed || $DEF_FIXED; @@ -374,7 +388,6 @@ else { die "roff font should be 1 or 2 chars, not `$CFont_embed'"; } -$section = $opt_section || $DEF_SECTION; $date = $opt_date || $DEF_DATE; for (qw{NAME DESCRIPTION}) { @@ -403,14 +416,22 @@ if ($name ne 'something') { unless (/\s*-+\s+/) { $oops++; warn "$0: Improper man page - no dash in NAME header in paragraph $. of $ARGV[0]\n" + } else { + my @n = split /\s+-+\s+/; + if (@n != 2) { + $oops++; + warn "$0: Improper man page - malformed NAME header in paragraph $. of $ARGV[0]\n" + } + else { + %namedesc = @n; + } } - %namedesc = split /\s+-+\s+/; last FCHECK; } next if /^=cut\b/; # DB_File and Net::Ping have =cut before NAME - die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n"; + die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n" unless $lax; } - die "$0: Invalid man page - no documentation in $ARGV[0]\n"; + die "$0: Invalid man page - no documentation in $ARGV[0]\n" unless $lax; } close F; } @@ -683,18 +704,16 @@ while (<>) { ) } {I<$1>}gx; - # func(n) is a reference to a man page + # func(n) is a reference to a perl function or a man page s{ - (\w+) + ([:\w]+) ( - \( - [^\s,\051]+ - \) + \( [^\051]+ \) ) } {I<$1>\\|$2}gx; # convert simple variable references - s/(\s+)([\$\@%][\w:]+)/${1}C<$2>/g; + s/(\s+)([\$\@%][\w:]+)(?!\()/${1}C<$2>/g; if (m{ ( [\-\w]+ @@ -830,6 +849,11 @@ while (<>) { } elsif ($Cmd eq 'item') { s/^\*( |$)/\\(bu$1/g; + # if you know how to get ":s please do + s/\\\*\(L"([^"]+?)\\\*\(R"/'$1'/g; + s/\\\*\(L"([^"]+?)""/'$1'/g; + s/[^"]""([^"]+?)""[^"]/'$1'/g; + # here do something about the $" in perlvar? print STDOUT qq{.Ip "$_" $indent\n}; print qq{.IX Item "$_"\n}; } @@ -856,7 +880,7 @@ print <<"END"; .rn }` '' END -if (%wanna_see) { +if (%wanna_see && !$lax) { @missing = keys %wanna_see; warn "$0: $Filename is missing required section" . (@missing > 1 && "s") @@ -940,13 +964,7 @@ sub escapes { # make troff just be normal, but make small nroff get quoted # decided to just put the quotes in the text; sigh; sub ccvt { - local($_,$prev) = @_; - if ( /^\W+$/ && !/^\$./ ) { - ($prev && "\n") . noremap(qq{.CQ $_ \n\\&}); - # what about $" ? - } else { - noremap(qq{${CFont_embed}$_\\fR}); - } + local($_,$prev) = @_; noremap(qq{.CQ "$_" \n\\&}); }