summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/pod/splitpod
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/pod/splitpod')
-rwxr-xr-xcontrib/perl5/pod/splitpod60
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;
+
+}
OpenPOWER on IntegriCloud