Also close bug
[filters.git] / censor
1 #!/usr/bin/perl
2 # Censor filter.
3 # Copyright 2002 by Joey Hess under the terms of the GNU GPL.
4
5 # Yes, this program is self-modifying code, if you want it to be.
6 if (exists $ENV{ADD_WORD}) {
7 open(IN, $0) || die "cannot read myself";
8 @lines=<IN>;
9 close IN;
10 open OUT, ">$0" || die "cannot write myself";
11 for (@lines) {
12 print OUT $_;
13 if (/^__DATA__\n$/) {
14 open(DATAOUT, "|sort|uniq|column >> $0");
15 $ENV{ADD_WORD} =~ y/n-za-m/a-z/;
16 print DATAOUT "$ENV{ADD_WORD}\n";
17 print DATAOUT join("\n",
18 map { chomp; split ' ', $_ } <DATA>);
19 close DATAOUT;
20 exit;
21 }
22 }
23 }
24
25 $censored = join("|", reverse sort { $a cmp $b }
26 grep { length $_ }
27 map { chomp; y/a-z/n-za-m/; split ' ', $_ } <DATA>);
28
29 while (<>) {
30 s/\b($censored)ed/CENSORED/ig; # don't say "CENSOREDed"
31 s/\b($censored)/CENSORED/ig;
32 print $_;
33 }
34
35 __DATA__
36 ahqr enaql gjng pbpx t-fcbg
37 anxrq encr grng pbzrvat t\f+fcbg
38 avccyr erne guebng pbzvat tebva
39 bcravat fangpu gvg pebgpu ubbgre
40 beny fchax gvggl penc ubeal
41 betl fcrez gvggvr penpx ubyr
42 betnfz fcuvapgre hgrehf pernz uhzc
43 certanag fghq ihyin phag unaqwbo
44 cevpx fgnss intvan phz urnq
45 chff fhpx ivetva phzzvat wvfz
46 chffl fjnyybj ivoengbe pnzr xabo
47 chffvrf fperj jbzo preivk xvff
48 chovp frk jrg pureel ybir
49 chqraqhz frkhny juber pyvg ybire
50 chzc frrq kkk pyvgbevf ybirq
51 cnagvrf frzra nany pyvggl ybnq
52 crargengr funsg nerbyn pyvznk ynovn
53 crargengrq funt nff qevyyrq ynvq
54 cravf funttvat nffubyr qrsybjre yrfovna
55 crgre fuvg obbo qvpx yvcf
56 crpxre fvrt\furvy oernfg qvyqb znfgheong
57 cunyyhf fyhg ohgg rebgvp znfgheongr
58 cvff fyhggvfu ohggbpx rerpgvba znfgheongvat
59 ebfrohq fyvg onyy rkcbfrq znzznel
60 ebq gbathr ovgpu shpx znzznevrf
61 ehg gbby oybj snpvny
This page took 0.024193 seconds and 4 git commands to generate.