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