#!/usr/cs/bin/perl # Formats ASCII text for the PalmPilot. Tries to make ASCII drawings look # right under the Pilot's proportional font. # Written by David Coppit (david@coppit.org, # http://www.coppit.org/index.html) # Please send me any modifications you make. (for the better, that is. :) Feel # free to modify, adapt, or redistribute, but please leave original authorship # credit to me. # Usage: formatit [input] > [output] if ($#ARGV == -1) { die "Give an argument file to format for the pilot.\n"; } open (INPUT, $ARGV[0]); $" = ""; while ($line = ) { # Ignore more than 1 more empty line (already printed one at the end of the # last iteration). $count = 0; if ($line eq "\n") { print $line; $count++; while (($line = ) && ($line eq "\n")) { $count++; } } # Get a paragraph @para = (); do { push @para, $line; } while (($line = ) && ($line ne "\n")); if (eof(INPUT)) { exit; } $linepara = join("",@para); # Try to detect illustrations if ($linepara =~ /[\/|_\\].*[\/|_\\].*[\/|_\\].*[\/|_\\]/) { # Convert " " to " " for proportional font grep { s/ / /g } @para; print @para; } # Try to detect lists elsif (($#para > 0) && (length($para[0]) < 55) && (length($para[1]) < 55)) { print @para; } # Try to detect blockquotes elsif (($para[0] =~ /^\s\s\s\s\s*\S/) && ($para[1] =~ /^\s\s\s\s\s*\S/)) { print @para; } # Try to detect TOC elsif (($#para > 2) && ($para[0] =~ /^\s*\d/) && ($para[1] =~ /^\s*\d/) && ($para[2] =~ /^\s*\d/)) { print @para; } else { $linepara =~ s/\n/ /g; $linepara =~ s/ $/\n/; print $linepara; } # Print the newline between paragraphs. print $line; } close INPUT;