]>
Commit | Line | Data |
---|---|---|
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: | |
38 | s/\b([Bb])urk\b/$1ork/g; | |
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. | |
45 | s/tiun/shun/g; # this actually has the effect of changing "tion" to "shun". | |
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 | ||
59 | # Change "ow" to "oo". | |
60 | s/uv/oo/g; | |
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; |