Blob Blame History Raw
#!/usr/bin/perl

# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material 
# is made available to anyone wishing to use, modify, copy, or
# redistribute it subject to the terms and conditions of the GNU General
# Public License v.2.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Author: Petr Splichal <psplicha@redhat.com>

# This perl script takes all supplied files or stdin and extracts
# every =pod section that does not include =head1 headings except
# those which contain beakerlib-manual-{header,footer} directives.
#
# Finally it spits out parsed =pod sections in the following order:
# beakerlib-manual-header
# beakerlib-manual-include (all non-=head1 sections included here)
# beakerlib-manual-footer

my $pod = 0;
my $type = '';
my %text = (include => '=head1 FUNCTIONS');

while (<>) {
    # end of =pod section
    if (m/^=cut/) {
        $pod = 0;
    }

    # recognize header/footer and trash =head1's
    $type = 'header' if m/beakerlib-manual-header/;
    $type = 'footer' if /beakerlib-manual-footer/;
    $type = 'trash'  if /^=head1/ && ! ($type =~ m/header|footer/);

    # add to corresponding place
    $text{$type} .= $_ if $pod;

    # start of =pod section
    if (m/^=pod/) {
        $pod = 1;
        $type = 'include';
    }
}

print $text{header};
print $text{include};
print $text{footer};