X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=utils%2Ffilter2docs.pl;h=1610f16bf3dcf1a5d21a8bb33cb04addca44dd2b;hp=ea326ed85ce712ea8d87f5c3210f4b84f2c46049;hb=a5b4d31ab5ad2ed24cdb53ffa92679411b4176b0;hpb=72081f829de368392d04076728f8c991178c0080 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();