* Added a censor filter.
[filters.git] / censor
CommitLineData
e99ec255 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.
6if (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
29while (<>) {
30 s/\b($censored)ed/CENSORED/ig; # don't say "CENSOREDed"
31 s/\b($censored)/CENSORED/ig;
32 print $_;
33}
34
35__DATA__
36ahqr enaql grng pbzrvat t\f+fcbg
37anxrq encr guebng pbzvat tebva
38avccyr erne gvg pebgpu ubbgre
39bcravat fangpu gvggl penc ubeal
40beny fchax gvggvr penpx ubyr
41betl fcrez hgrehf pernz uhzc
42betnfz fcuvapgre ihyin phag unaqwbo
43certanag fghq intvan phz urnq
44cevpx fgnss ivetva phzzvat wvfz
45chff fhpx ivoengbe pnzr xabo
46chffl fjnyybj jbzo preivk xvff
47chffvrf fperj jrg pureel ybir
48chovp frk juber pyvg ybire
49chqraqhz frkhny kkk pyvgbehf ybirq
50chzc frrq nany pyvggl ybnq
51cnagvrf frzra nerbyn pyvznk ynovn
52crargengr funsg nff qevyyrq ynvq
53crargengrq funt nffubyr qrsybjre yrfovna
54cravf funttvat obbo qvpx yvcf
55crgre fuvg oernfg qvyqb znfgheong
56crpxre fyhg ohgg rebgvp znfgheongr
57cunyyhf fyhggvfu ohggbpx rerpgvba znfgheongvat
58cvff fyvg onyy rkcbfrq znzznel
59ebfrohq gbathr ovgpu shpx znzznevrf
60ebq gbby oybj snpvny
61ehg gjng pbpx t-fcbg
This page took 0.011324 seconds and 4 git commands to generate.