#!/home/grinnz/projects/perldoc-browser/perls/5.32.1/bin/perl eval 'exec /home/grinnz/projects/perldoc-browser/perls/5.32.1/bin/perl -S $0 ${1+"$@"}' if $running_under_some_shell; # Convert POD data to formatted ASCII text. # # The driver script for Pod::Text, Pod::Text::Termcap, and Pod::Text::Color, # invoked by perldoc -t among other things. # # SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl use 5.006; use strict; use warnings; use Getopt::Long qw(GetOptions); use Pod::Text (); use Pod::Usage qw(pod2usage); # 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. my %options; 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; if (defined $input) { warn "$0: unable to format $input\n"; } else { warn "$0: unable to format standard 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