7e3afbba |
1 | #!/usr/bin/perl -p |
2 | # Swedish Chef filter. Bork Bork Bork! |
3 | # Copyright 1999 by Joey Hess under the terms of the GNU GPL. |
4 | |
5 | # Note that the order of the commands in this program is very important! |
6 | |
7 | # Change 'e' at the end of a word to 'e-a', but don't mess with the word |
8 | # "the". |
9 | s{(\w+)e(\b)}{ |
10 | if (lc($1) ne 'th') { |
11 | "$1e-a$2" |
12 | } |
13 | else { |
14 | "$1e$2" |
15 | } |
16 | }eg; |
17 | |
18 | # Stuff that happens at the end of a word. |
19 | s/en(\b)/ee$1/g; |
20 | s/th(\b)/t$1/g; |
21 | |
22 | # Stuff that happens if not the first letter of a word. |
23 | s/(\w)f/$1ff/g; |
24 | |
25 | # Change 'o' to 'u' and at the same time, change 'u' to 'oo'. But only |
26 | # if it's not the first letter of the word. |
27 | tr/ou/uo/; |
28 | s{(\b)([uo])}{ |
29 | $1 . $2 eq 'o' ? 'u' : 'o' |
30 | }eg; |
31 | # Note that this also handles doubling "oo" at the beginning of words. |
32 | s/o/oo/g; |
33 | # Have to double "Oo" seperatly. |
34 | s/(\b)O(\w)/$1Oo$2/g; |
35 | # Fix the word "bork", which will have been mangled to "burk" |
36 | # by above commands. Note that any occurence of "burk" in the input |
37 | # gets changed to "boork", so it's completly safe to do this: |
cd3ff89e |
38 | s/\b([Bb])urk\b/$1ork/g; |
7e3afbba |
39 | |
40 | # Stuff to do to letters that are the first letter of any word. |
41 | s/\be/i/g; |
42 | s/\bE/I/g; |
43 | |
44 | # Stuff that always happens. |
cd3ff89e |
45 | s/tiun/shun/g; # this actually has the effect of changing "tion" to "shun". |
7e3afbba |
46 | s/the/zee/g; |
47 | s/The/Zee/g; |
48 | tr/vVwW/fFvV/; |
49 | |
50 | # Stuff to do to letters that are not the last letter of a word. |
51 | s/a(?!\b)/e/g; |
52 | s/A(?!\b)/E/g; |
53 | |
54 | s/en/un/g; # this actually has the effect of changing "an" to "un". |
55 | s/En/Un/g; # this actually has the effect of changing "An" to "Un". |
56 | s/eoo/oo/g; # this actually has the effect of changing "au" to "oo". |
57 | s/Eoo/Oo/g; # this actually has the effect of changing "Au" to "Oo". |
58 | |
cd3ff89e |
59 | # Change "ow" to "oo". |
60 | s/uv/oo/g; |
7e3afbba |
61 | |
62 | # Change 'i' to 'ee', but not at the beginning of a word, |
63 | # and only affect the first 'i' in each word. |
64 | s/(\b\w[a-hj-zA-HJ-Z]*)i/$1ee/g; |
65 | |
66 | # Special punctuation of the end of sentances but only at end of lines. |
67 | s/([.?!])$/$1\nBork Bork Bork!/g; |