#!/usr/bin/env perl
use 5.014;
use warnings;
+use utf8;
use open qw( :std :utf8 );
use re '/msx';
-our $VERSION = '1.00';
+our $VERSION = '1.01';
local $/ = undef; # slurp
my $source = readline;
my $pod = $source;
$pod =~ s/^=over\K/ 25/; # indent options list
+$pod =~ s/[BC]<([^>]+)>/$1/g; # unbolden
$pod =~ s{
^=item \h \N*\n\n \N*\n \K # first line
(?: (?: ^=over .*? ^=back\n )? (?!=) \N*\n )*
}{\n}g; # abbreviate options
-$pod =~ s/[.,](?=\n)//g; # trailing punctuation
$pod =~ s/^=item\ \K(?=--)/____/g; # align long options
# abbreviate <variable> indicators
$pod =~ s/\Q>.../s>/g;
-$pod =~ s/<(?:number|count|seconds)>/N/g;
-$pod =~ s/<character(s?)>/\Uchar$1/g;
+$pod =~ s/I<(?:number|count|seconds)>/N/g;
+$pod =~ s/I<character(s?)>/\Uchar$1/g;
$pod =~ s/\Q | /|/g;
-$pod =~ s/(?<!\w)<([a-z]+)>/\U$1/g; # uppercase
+$pod =~ s/I<([a-z]+)> (?![.,])/\U$1/g; # uppercase
+$pod =~ s/[.,](?=\n)//g; # trailing punctuation
require Pod::Usage;
my $parser = Pod::Usage->new(USAGE_OPTIONS => {
$usage =~ s/\n(?=\n\h)//msg; # strip space between items
$usage =~ s/^\ \ \K____/ /g; # nbsp substitute
+if (open my $logo, '<', 'mascot.txt') {
+ # append logo lines to top usage lines
+ my @ll = split /\n/, readline $logo;
+ my @ul = split /\n/, $usage, @ll + 1;
+ # centered in empty space on the second (longest) line
+ my $pad = (78 - 1 + length($ul[1]) - length($ll[0])) >> 1;
+ $ul[$_] .= (' ' x ($pad - length($ul[$_]))) . $ll[$_] for 0..$#ll;
+ $usage = join "\n", @ul;
+}
+
if ($ARGV eq '-') {
# custom formatted minimal usage text from pod document
print $usage;