Home | History | Annotate | Line # | Download | only in mantools
      1  1.1  tron #!/usr/bin/perl
      2  1.1  tron 
      3  1.1  tron # postconffix - add HTML paragraphs
      4  1.1  tron 
      5  1.1  tron # Basic operation:
      6  1.1  tron #
      7  1.1  tron # - Process input as text blocks separated by one or more empty
      8  1.1  tron # (or all whitespace) lines.
      9  1.1  tron #
     10  1.1  tron # - Don't touch blocks that start with `<' in column zero.
     11  1.1  tron #
     12  1.1  tron # The only changes made are:
     13  1.1  tron #
     14  1.1  tron # - Put <p>..</p> around text blocks that start in column zero.
     15  1.1  tron #
     16  1.1  tron # - Put <pre>..</pre> around text blocks that start elsewhere.
     17  1.1  tron 
     18  1.1  tron #use Getopt::Std;
     19  1.1  tron 
     20  1.1  tron #$opt_h = undef;
     21  1.1  tron #$opt_v = undef;
     22  1.1  tron #getopts("hv");
     23  1.1  tron 
     24  1.1  tron #die "Usage: $0 [-hv]\n" if ($opt_h);
     25  1.1  tron 
     26  1.1  tron #push @ARGV, "/dev/null"; # XXX
     27  1.1  tron 
     28  1.1  tron while(<>) {
     29  1.1  tron 
     30  1.1  tron     # Pass through comments and blank linkes before a text block.
     31  1.1  tron     if (/^(#|\s*$)/) {
     32  1.1  tron 	print;
     33  1.1  tron 	next;
     34  1.1  tron     }
     35  1.1  tron 
     36  1.1  tron     # Gobble up the next text block.
     37  1.1  tron     $block = "";
     38  1.1  tron     do {
     39  1.1  tron 	$_ =~ s/\s+\n$/\n/;
     40  1.1  tron 	$block .= $_;
     41  1.1  tron     } while(($_ = <>) && /\S/);
     42  1.1  tron 
     43  1.1  tron     # Don't touch a text block starting with < in column zero.
     44  1.1  tron     if ($block =~ /^</) {
     45  1.1  tron 	print "$block\n";
     46  1.1  tron     }
     47  1.1  tron 
     48  1.1  tron     # Meta block.
     49  1.1  tron     elsif ($block =~ /^%/) {
     50  1.1  tron 	print "$block\n";
     51  1.1  tron     }
     52  1.1  tron 
     53  1.1  tron     # Example block.
     54  1.1  tron     elsif ($block =~ /^\S+\s=/) {
     55  1.1  tron 	print "<pre>\n$block</pre>\n\n";
     56  1.1  tron     }
     57  1.1  tron 
     58  1.1  tron     # Pre-formatted block.
     59  1.1  tron     elsif ($block =~ /^\s/) {
     60  1.1  tron 	print "<pre>\n$block</pre>\n\n";
     61  1.1  tron     }
     62  1.1  tron 
     63  1.1  tron     # Paragraph block.
     64  1.1  tron     elsif ($block =~ /^\S/) {
     65  1.1  tron 	print "<p>\n$block</p>\n\n";
     66  1.1  tron     }
     67  1.1  tron 
     68  1.1  tron     # Can't happen.
     69  1.1  tron     else {
     70  1.1  tron 	die "Unrecognized text block:\n$block";
     71  1.1  tron     }
     72  1.1  tron }
     73