X-Git-Url: http://www.privoxy.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=utils%2Ffilter2docs.pl;h=1610f16bf3dcf1a5d21a8bb33cb04addca44dd2b;hb=65a92a7e11613f674edbf811920e2e27b679c565;hp=ea326ed85ce712ea8d87f5c3210f4b84f2c46049;hpb=72081f829de368392d04076728f8c991178c0080;p=privoxy.git
diff --git a/utils/filter2docs.pl b/utils/filter2docs.pl
index ea326ed8..1610f16b 100755
--- a/utils/filter2docs.pl
+++ b/utils/filter2docs.pl
@@ -1,25 +1,89 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl
-# $Id: filter2docs.pl,v 1.1.2.1 2003/03/16 15:32:44 oes Exp $
-# $Source: /cvsroot/ijbswa/current/utils/Attic/filter2docs.pl,v $
+# utils/filter2docs.pl
# Parse the filter names and descriptions from a filter file and
# spit out copy&paste-ready markup for the various places in
# configuration and documentation where all filters are listed.
-die "Usage: $0 filter-file\n" unless (@ARGV == 1) ;
-open(INPUT, "< $ARGV[0]") or die "Coudln't open input file $ARGV[0] because $!\n";
-
-while () {
- if (/^FILTER: ([-\w]+) (.*)$/) {
- $comment_lines .= "# $1:" . (" " x (20-length($1))) . "$2\n";
- $action_lines .= "-filter{$1} \\\n";
- $sgml_source_1 .= " \n \n +filter{$1}" .
- (" " x (20-length($1))) . "# $2\n \n";
- $sgml_source_2 .= " -filter{$1} \\\n";
- }
+use strict;
+use warnings;
+
+my (%comment_lines, %action_lines, %sgml_source_1, %sgml_source_2);
+
+sub main() {
+
+ die "Usage: $0 filter-file\n" unless (@ARGV == 1) ;
+ open(INPUT, "< $ARGV[0]") or die "Couldn't open input file $ARGV[0]: $!\n";
+
+ parse_file();
+ print_markup();
+}
+
+sub sgml_escape($) {
+ my $text = shift;
+
+ $text =~ s@<@<@g;
+ $text =~ s@>@>@g;
+
+ return $text;
+}
+
+sub parse_file() {
+ while () {
+ if (/^((?:(?:SERVER|CLIENT)-HEADER-)?(?:FILTER|TAGGER)): ([-\w]+) (.*)$/) {
+ my $type_uc = $1;
+ my $name = $2;
+ my $description = $3;
+ my $type = lc($type_uc);
+ my $sgml_description = sgml_escape($description);
+ my $white_space = ' ' x (($type eq 'filter' ? 20 : 27) - length($name));
+
+ $comment_lines{$type} .= "# $name:" . $white_space . "$description\n";
+ $action_lines{$type} .= "+$type" . "{$name} \\\n";
+ $sgml_source_1{$type} .= " \n \n" .
+ " +$type" . "{$name}" . $white_space .
+ "# $sgml_description\n \n";
+ $sgml_source_2{$type} .= ' -$type" . "{$name} \\\n";
+ }
+ }
+}
+
+sub print_markup() {
+
+ my @filter_types = (
+ 'filter',
+ 'server-header-filter',
+ 'client-header-filter',
+ 'server-header-tagger',
+ 'client-header-tagger'
+ );
+
+ foreach my $type (@filter_types) {
+
+ next unless defined $action_lines{$type};
+
+ print "=" x 90;
+
+ print <<" DOCMARKUP";
+
+Producing $type markup:
+
+Comment lines for default.action.master:
+
+$comment_lines{$type}
+Block of $type actions for default.action.master:
+
+$action_lines{$type}
+SGML Source for AF chapter in U-M:
+
+$sgml_source_1{$type}
+SGML Source for AF Tutorial chapter in U-M:
+
+$sgml_source_2{$type}
+ DOCMARKUP
+ }
}
-print("Comment lines for default.action:\n\n$comment_lines\n\nBlock of filter actions for"
- ." standard.action:\n\n$action_lines\n\nSGML Source for AF chapter in U-M:" .
- "\n\n$sgml_source_1\n\nSGML Source for AF Tutorial chapter in U-M\n\n$sgml_source_2\n");
+main();