38562f39 |
1 | #!/usr/bin/perl -p |
2 | |
3 | # an array, not a hash. because order is important |
4 | @trans_table=( |
5 | '\bmy\b' => 'me', |
6 | '\bboss\b' => 'admiral', |
7 | '\bmanager\b' => 'admiral', |
8 | '\b[Cc]aptain\b' => "Cap'n", |
9 | '\bmyself\b' => 'meself', |
10 | '\byour\b' => 'yer', |
11 | '\byou\b' => 'ye', |
12 | '\bfriend\b' => 'matey', |
13 | '\bfriends\b' => 'maties', |
14 | '\bco[-]?worker\b' => 'shipmate', |
15 | '\bco[-]?workers\b' => 'shipmates', |
16 | '\bearlier\b' => 'afore', |
17 | '\bold\b' => 'auld', |
18 | '\bthe\b' => "th'", |
19 | '\bof\b' => "o'", |
20 | '\bdon\'t\b' => "dern't", |
21 | '\bdo not\b' => "dern't", |
e2bfdb48 |
22 | '\bnever\b' => "no nay ne'er", |
38562f39 |
23 | '\bever\b' => "e'er", |
24 | '\bover\b' => "o'er", |
25 | '\bYes\b' => 'Aye', |
26 | '\bNo\b' => 'Nay', |
27 | '\bdon\'t know\b' => "dinna", |
28 | '\bhadn\'t\b' => "ha'nae", |
29 | '\bdidn\'t\b' => "di'nae", |
30 | '\bwasn\'t\b' => "weren't", |
31 | '\bhaven\'t\b' => "ha'nae", |
32 | '\bfor\b' => 'fer', |
33 | '\bbetween\b' => 'betwixt', |
34 | '\baround\b' => "aroun'", |
35 | '\bto\b' => "t'", |
36 | '\bit\'s\b' => "'tis", |
e2bfdb48 |
37 | '\bIt\'s\b' => 'It be', |
38562f39 |
38 | '\bwoman\b' => 'wench', |
39 | '\blady\b' => 'wench', |
40 | '\bwife\b' => 'lady', |
41 | '\bgirl\b' => 'lass', |
42 | '\bgirls\b' => 'lassies', |
43 | '\bguy\b' => 'lubber', |
44 | '\bman\b' => 'lubber', |
45 | '\bfellow\b' => 'lubber', |
46 | '\bdude\b' => 'lubber', |
47 | '\bboy\b' => 'lad', |
48 | '\bboys\b' => 'laddies', |
49 | '\bchildren\b' => 'minnows', |
50 | '\bkids\b' => 'minnows', |
51 | '\bhim\b' => 'that scurvey dog', |
52 | '\bher\b' => 'that comely wench', |
53 | '\bhim\.\b' => 'that drunken sailor', |
54 | '\bHe\b' => 'The ornery cuss', |
55 | '\bShe\b' => 'The winsome lass', |
56 | '\bhe\'s\b' => 'he be', |
57 | '\bshe\'s\b' => 'she be', |
58 | '\bwas\b' => "were bein'", |
59 | '\bHey\b' => 'Avast', |
60 | '\bher\.\b' => 'that lovely lass', |
61 | '\bfood\b' => 'chow', |
62 | '\broad\b' => 'sea', |
63 | '\broads\b' => 'seas', |
64 | '\bstreet\b' => 'river', |
65 | '\bstreets\b' => 'rivers', |
66 | '\bhighway\b' => 'ocean', |
67 | '\bhighways\b' => 'oceans', |
68 | '\bcar\b' => 'boat', |
69 | '\bcars\b' => 'boats', |
70 | '\btruck\b' => 'schooner', |
71 | '\btrucks\b' => 'schooners', |
72 | '\bSUV\b' => 'ship', |
73 | '\bmachine\b' => 'contraption', |
74 | '\bairplane\b' => 'flying machine', |
75 | '\bjet\b' => 'flying machine', |
76 | '\bdriving\b' => 'sailing', |
77 | '\bdrive\b' => 'sail', |
e2bfdb48 |
78 | '\bwith\b' => "wi'", |
79 | '\bam\b' => 'be', |
80 | '\bis\b' => 'be', |
81 | '\bare\b' => 'be', |
82 | '\bwas\b' => 'be', |
83 | '\bwere\b' => 'be', |
84 | '\bwere\b' => 'be', |
38562f39 |
85 | ); |
86 | |
87 | while (@trans_table) { |
88 | $key=shift @trans_table; |
89 | $value=shift @trans_table; |
90 | s/$key/$value/g; |
91 | } |
92 | |
93 | s/ing\b/in'/g; |
94 | s/ings\b/in's/g; |
32a7bed8 |
95 | s/(\.( |\t|$))/avast($1,3)/eg; |
96 | s/([!\?]( \t|$))/avast($1,2)/eg; # Greater chance after exclamation |
e2bfdb48 |
97 | s/\Br\B/roll()/eg; |
98 | |
99 | sub roll { |
100 | return 'r' x (rand(5)+1) if rand > 0.5; |
101 | return 'r'; |
102 | } |
38562f39 |
103 | |
104 | sub avast { |
105 | my $stub=shift; |
106 | my $chance=shift; |
107 | |
108 | my @shouts=( |
109 | ", avast$stub", |
110 | "$stub Ahoy!", |
111 | ", and a bottle of rum!", |
112 | ", by Blackbeard's sword$stub", |
113 | ", by Davy Jones' locker$stub", |
114 | "$stub Walk the plank!", |
115 | "$stub Aarrr!", |
116 | "$stub Yaaarrrrr!", |
117 | ", pass the grog!", |
118 | ", and dinna spare the whip!", |
119 | ", with a chest full of booty$stub", |
120 | ", and a bucket o' chum$stub", |
121 | ", we'll keel-haul ye!", |
122 | "$stub Shiver me timbers!", |
123 | "$stub And hoist the mainsail!", |
124 | "$stub And swab the deck!", |
125 | ", ye scurvey dog$stub", |
126 | "$stub Fire the cannons!", |
127 | ", to be sure$stub", |
128 | ", I'll warrant ye$stub", |
e2bfdb48 |
129 | "$stub Arr, me hearty!", |
38562f39 |
130 | ); |
131 | |
132 | if (int rand($chance) == 1) { |
133 | return @shouts[rand @shouts]." "; |
134 | } |
135 | else { |
136 | return $stub; |
137 | } |
138 | } |