#!/usr/bin/perl eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; # pod2text -- Convert POD data to formatted ASCII text. # # Copyright 1999, 2000, 2001, 2004, 2006, 2008, 2010, 2012, 2013 # Russ Allbery # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. # # The driver script for Pod::Text, Pod::Text::Termcap, and Pod::Text::Color, # invoked by perldoc -t among other things. require 5.004; use Getopt::Long qw(GetOptions); use Pod::Text (); use Pod::Usage qw(pod2usage); use strict; # Clean up $0 for error reporting. $0 =~ s%.*/%%; # Take an initial pass through our options, looking for one of the form # -. We turn that into -w for compatibility with the # original pod2text script. for (my $i = 0; $i < @ARGV; $i++) { last if $ARGV[$i] =~ /^--$/; if ($ARGV[$i] =~ /^-(\d+)$/) { splice (@ARGV, $i++, 1, '-w', $1); } } # Insert -- into @ARGV before any single dash argument to hide it from # Getopt::Long; we want to interpret it as meaning stdin (which Pod::Simple # does correctly). my $stdin; @ARGV = map { $_ eq '-' && !$stdin++ ? ('--', $_) : $_ } @ARGV; # Parse our options. Use the same names as Pod::Text for simplicity, and # default to sentence boundaries turned off for compatibility. my %options; $options{sentence} = 0; Getopt::Long::config ('bundling'); GetOptions (\%options, 'alt|a', 'code', 'color|c', 'errors=s', 'help|h', 'indent|i=i', 'loose|l', 'margin|left-margin|m=i', 'nourls', 'overstrike|o', 'quotes|q=s', 'sentence|s', 'stderr', 'termcap|t', 'utf8|u', 'width|w=i') or exit 1; pod2usage (1) if $options{help}; # Figure out what formatter we're going to use. -c overrides -t. my $formatter = 'Pod::Text'; if ($options{color}) { $formatter = 'Pod::Text::Color'; eval { require Term::ANSIColor }; if ($@) { die "-c (--color) requires Term::ANSIColor be installed\n" } require Pod::Text::Color; } elsif ($options{termcap}) { $formatter = 'Pod::Text::Termcap'; require Pod::Text::Termcap; } elsif ($options{overstrike}) { $formatter = 'Pod::Text::Overstrike'; require Pod::Text::Overstrike; } delete @options{'color', 'termcap', 'overstrike'}; # If neither stderr nor errors is set, default to errors = die. if (!defined $options{stderr} && !defined $options{errors}) { $options{errors} = 'die'; } # Initialize and run the formatter. my $parser = $formatter->new (%options); my $status = 0; do { my ($input, $output) = splice (@ARGV, 0, 2); $parser->parse_from_file ($input, $output); if ($parser->{CONTENTLESS}) { $status = 1; warn "$0: unable to format $input\n"; if (defined ($output) and $output ne '-') { unlink $output unless (-s $output); } } } while (@ARGV); exit $status; __END__ =for stopwords -aclostu --alt --stderr Allbery --overstrike overstrike --termcap --utf8 UTF-8 subclasses --nourls =head1 NAME pod2text - Convert POD data to formatted ASCII text =head1 SYNOPSIS pod2text [B<-aclostu>] [B<--code>] [B<--errors>=I