postconffix revision 1.1.1.1 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