Package: filters
Severity: wishlist
Tags: patch

Here's a filter that resembles the "dwarven" (really, kind of Scottish)
accent from Order of the Stick.

-- 
1KB             // Microsoft corollary to Hanlon's razor:
                //      Never attribute to stupidity what can be
                //      adequately explained by malice.
#!/usr/bin/perl -w
# Fake scottish (dwarven) accent filter, by Adam Borowski, inspired by the
# character "Durkon" from Order of the Stick by Rich Burlew.  GPL, 2007.
use strict;

my @repl=qw(
  ^yes$:aye             there:thar              eir$:ar
  about:aboot           ^he$:'e                 them:'em
  ^him:'im              out_of$:outta           of_course:'course
  ^of$:o'               ^and$:an'               to$:ta
  tog:tag               that:tha                the:tha
  wouldn't:wouldn'ta    cannot:cannae           can't:cannae
  don't:dinnae          're$:r                  for$:fer
  ver$:'er              ber$:b'r                every$:ev'ry
  en$:'n                ^if$:if'n               enl:'nl
  eng:'ng               ing:in'                 ment:mn't
  ^es:'s                ^ex:'s                  ^not$:na
  ^no$:nay              n't_have:n'tve          ^is$:be
  ^are$:be              have:haf                abl:'bl
  ^you$:ye              ^your:yer               ^you':ye'
  noth:nuth             ^this$:'tis             ^here:'ere
  doesn't:don't         at_a$:atta              ith$:it'
  ered$:'red            into$:inta              ^before:'fore
  wit'_':wit_'          wit'_t:wit_t            wit'_w:wit_w
  wit'_y:wit_y          get_a:git_a             ally$:'lly$
  ^my:me                ^i_think$:methinks      nay_w:na_w
  ^one$:'un             ^'un_a:one_a            at_ta$:atta
  ot_ta$:otta           ^isn't$:ain't           ^so_th:s'th
  ned$:n'd              ^because:'cause
), my @r;

sub firstu($)
{
    $_[0]=~s/^([^a-z]*)([a-z])/$1\u$2/;
    return $_[0];
}

for(@repl)
{
    s/_/ /g;
    my ($l,$r)=split(/:/,$_);
    for([$l,$r], [firstu $l, firstu $r], ["\U$l","\U$r"])
    {
        ($l,$r)[EMAIL PROTECTED];
        $l=~s/^\^/\\b/;
        $l=~s/\$$/\\b/;
        push @r, [qr/$l/, $r];
    }
}

while(my $txt=<>)
{
    $txt=~s/$$_[0]/$$_[1]/g for @r;
    print $txt;
}

Reply via email to