diff options
Diffstat (limited to 'contrib/perl5/pod/splitpod')
-rwxr-xr-x | contrib/perl5/pod/splitpod | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/contrib/perl5/pod/splitpod b/contrib/perl5/pod/splitpod new file mode 100755 index 0000000..fd38e51 --- /dev/null +++ b/contrib/perl5/pod/splitpod @@ -0,0 +1,60 @@ +#!/usr/bin/perl + +use lib '../lib'; # If you haven't installed perl yet. +use Pod::Functions; + +local $/ = ''; + +$cur = ''; +while (<>) { + + next unless /^=(?!cut)/ .. /^=cut/; + + if (s/=item (\S+)/$1/) { + #$cur = "POSIX::" . $1; + $next{$cur} = $1; + $cur = $1; + $syn{$cur} .= $_; + next; + } else { + #s,L</,L<POSIX/,g; + s,L</,L<perlfunc/,g; + push @{$pod{$cur}}, $_ if $cur; + } +} + +for $f ( keys %syn ) { + next unless $Type{$f}; + $flavor = $Flavor{$f}; + $orig = $f; + ($name = $f) =~ s/\W//g; + + # deal with several functions sharing a description + $func = $orig; + $func = $next{$func} until $pod{$func}; + my $body = join "", @{$pod{$func}}; + + # deal with unbalanced =over and =back cause by the split + my $has_over = $body =~ /^=over/; + my $has_back = $body =~ /^=back/; + $body =~ s/^=over\s*//m if $has_over and !$has_back; + $body =~ s/^=back\s*//m if $has_back and !$has_over; + open (POD, "> $name.pod") || die "can't open $name.pod: $!"; + print POD <<EOF; +=head1 NAME + +$orig - $flavor + +=head1 SYNOPSIS + +$syn{$orig} + +=head1 DESCRIPTION + +$body + +EOF + + close POD; + +} |