| 1 | #!/usr/bin/perl -p |
| 2 | # B1FF filter. |
| 3 | # Copyright 1999 by Joey Hess under the terms of the GNU GPL. |
| 4 | |
| 5 | # I use an array, not a hash. because order is important. |
| 6 | @trans_table=( |
| 7 | '\bEVERYONE\b' => 'EVRY 1', |
| 8 | '\bEVERYBODY\b' => 'EVRY BUDY', |
| 9 | '\bEVERY\b' => 'EVRY', |
| 10 | '\bONE\b' => '1', |
| 11 | '\bAND\b' => '+', |
| 12 | '\bYOU' => 'U', |
| 13 | '\bITS\b' => 'IT"S', |
| 14 | '\bIT\'S\b' => 'ITS', |
| 15 | '\bIS\b' => 'IZ', |
| 16 | '\bLINUX\b' => 'LINUS', |
| 17 | '\bUNIX\b' => 'THE MANEFRA1M O/S', |
| 18 | '\bWINDOWS\b' => 'WINDOWZ (IT RULEZ MAN!)', |
| 19 | '\bYOU\'RE\b' => 'YOUR', |
| 20 | '\bTHEM\b' => 'THUM', |
| 21 | '\bHERE\b' => 'HERE', |
| 22 | '\bTHEY\'RE\b' => 'THE1R', |
| 23 | '\bTHEIR\b' => 'THERE', |
| 24 | '\bWAS\b' => 'WUZ', |
| 25 | '\bMACINTOSH\b' => 'IMAC', # too 90's? |
| 26 | '\bVERY\b' => 'TOTALLY', |
| 27 | '\bCOMPUTER\b' => 'VIC-20', |
| 28 | '\bWHETHER\b' => 'WHETHUR', |
| 29 | '\b(?:H|CR)ACKER\b' => 'KEWL HACKER D00D!', |
| 30 | '\bOF\b' => 'UV', |
| 31 | '\bGNU\b' => 'NEW', |
| 32 | '\bQUITE\b' => 'REAL', |
| 33 | '\bFREE\b' => 'FREE!', |
| 34 | |
| 35 | 'HOME' => 'HUM', |
| 36 | 'COME' => 'CUM', |
| 37 | 'MICRO' => 'MIKRO', |
| 38 | 'GOVERN' => 'GUVERN', |
| 39 | 'PERSON' => 'D00D', |
| 40 | 'SOME' => 'SUM', |
| 41 | 'WRITE' => 'RITE', |
| 42 | 'REAL' => 'REEL', |
| 43 | 'LITE' => 'L1TE', |
| 44 | 'BIAN' => 'B1AN', |
| 45 | 'TION' => 'SHUN', |
| 46 | 'FOR' => '4', |
| 47 | 'TO' => '2', |
| 48 | 'ATE' => '8', |
| 49 | '\b2TALLY\b' => 'TOTALY', # fix from line above |
| 50 | 'LL' => 'L', |
| 51 | 'OO' => '00', |
| 52 | 'MATE' => 'M8', |
| 53 | 'ER' => 'UR', |
| 54 | 'S+\b' => 'Z', |
| 55 | 'KN' => 'N', |
| 56 | 'IE' => 'EI', |
| 57 | ); |
| 58 | |
| 59 | $_=uc; |
| 60 | s/;/,/g; |
| 61 | s/'//g; |
| 62 | |
| 63 | while (@trans_table) { |
| 64 | $key=shift @trans_table; |
| 65 | $value=shift @trans_table; |
| 66 | s/$key/$value/g; |
| 67 | } |
| 68 | |
| 69 | s/(\!+)/$1.make_exclimation()/eg; |
| 70 | s/(\?+)/$1.make_question()/eg; |
| 71 | s/I/rand 3 > 2 ? '1' : 'I'/eg; # change 1/3 of I's to 1's |
| 72 | |
| 73 | @punct=('.','!',','); |
| 74 | |
| 75 | s/\. /. /g; |
| 76 | s/\./$punct[int(rand 3)]/eg; |
| 77 | s/\,/./g; |
| 78 | |
| 79 | |
| 80 | # b1ff can't hold down on shift too well!!!!!!!1! |
| 81 | sub make_exclimation { |
| 82 | my $length=shift || int(rand 5); |
| 83 | my $ret='!'; |
| 84 | my $last=0; |
| 85 | for (1..$length) { |
| 86 | if (! $last && int(rand 3) eq 2) { |
| 87 | $ret.="1"; |
| 88 | $last=1; |
| 89 | } |
| 90 | else { |
| 91 | $ret.="!"; |
| 92 | $last=0; |
| 93 | } |
| 94 | } |
| 95 | return $ret; |
| 96 | } |
| 97 | |
| 98 | # ask questions excitedly?!?!?!?! |
| 99 | sub make_question { |
| 100 | my $length=shift || int(rand 5) + 1; |
| 101 | my $ret=''; |
| 102 | my $last=0; |
| 103 | while (length($ret) < $length) { |
| 104 | if (! $last && int(rand 5) > 2) { |
| 105 | $ret.="?!"; |
| 106 | $last=1; |
| 107 | } |
| 108 | elsif (! $last && int(rand 5) > 3) { |
| 109 | $ret.="?1"; |
| 110 | $last=1; |
| 111 | } |
| 112 | else { |
| 113 | $ret.="?"; |
| 114 | $last=0; |
| 115 | } |
| 116 | } |
| 117 | return $ret; |
| 118 | } |