~ubuntu-branches/ubuntu/hoary/filters/hoary

« back to all changes in this revision

Viewing changes to censor

  • Committer: Bazaar Package Importer
  • Author(s): Joey Hess
  • Date: 2004-11-06 13:37:51 UTC
  • mfrom: (1.1.1 warty)
  • Revision ID: james.westby@ubuntu.com-20041106133751-x4y6g4fce1g75f0n
Tags: 2.34
* Add uniencode filter. Because υɳіϲоⅾе is fun.
* Fix filters man page to escape hyphens. Because υɳіϲоⅾе is fun.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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