added bizzybotte, cleaned up backup
This commit is contained in:
138
bizzybotte/bizzybotte.pl
Normal file
138
bizzybotte/bizzybotte.pl
Normal file
@@ -0,0 +1,138 @@
|
||||
use strict;
|
||||
use warnings qw( all );
|
||||
use vars qw($VERSION %IRSSI);
|
||||
|
||||
use Irssi;
|
||||
$VERSION = '20070322';
|
||||
%IRSSI = (
|
||||
authors => 'sneak for #bantown',
|
||||
contact => 'sneak@datavibe.net',
|
||||
name => 'bizzybotte',
|
||||
description => 'this script makes you sound like bizzy.',
|
||||
license => 'Public Domain',
|
||||
);
|
||||
|
||||
sub send_text {
|
||||
|
||||
#"send text", char *line, SERVER_REC, WI_ITEM_REC
|
||||
my ( $data, $server, $witem ) = @_;
|
||||
if ( $witem
|
||||
&& ( $witem->{type} eq "CHANNEL" )
|
||||
&& $data
|
||||
)
|
||||
{
|
||||
$witem->command("msg $witem->{name} " . fuckestring($data));
|
||||
Irssi::signal_stop();
|
||||
}
|
||||
}
|
||||
|
||||
sub fuckestring ($) {
|
||||
my $string;
|
||||
if(@_) {
|
||||
$string = shift;
|
||||
} else {
|
||||
$string = $_;
|
||||
}
|
||||
return '' unless $string;
|
||||
my @things = parseline($string);
|
||||
my $out;
|
||||
foreach my $thing (@things) {
|
||||
if($thing->{'type'} eq 'word') {
|
||||
my $word = suffixword($thing->{'content'});
|
||||
$word = uc($word)
|
||||
if
|
||||
uc($thing->{'content'}) eq $thing->{'content'};
|
||||
$out .= $word;
|
||||
} else {
|
||||
$out .= $thing->{'content'};
|
||||
}
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
sub parseline {
|
||||
local $_ = shift;
|
||||
return unless $_;
|
||||
my @sentence;
|
||||
until (/\G$/gc) { # until pos at end of string
|
||||
if (/\G([A-Za-z']+)/gc) {
|
||||
push @sentence, { type => 'word', 'content' => $1 };
|
||||
} elsif (/\G([^A-Za-z']+)/gc) {
|
||||
push @sentence, { type => 'other', 'content' => $1} ;
|
||||
}
|
||||
}
|
||||
return @sentence;
|
||||
}
|
||||
|
||||
sub suffixword {
|
||||
local $_ = shift;
|
||||
return unless $_;
|
||||
|
||||
return('lolle') if lc($_) eq 'lol';
|
||||
return('butte') if lc($_) eq 'but';
|
||||
|
||||
# some simple skips:
|
||||
my $tmp = lc($_);
|
||||
$tmp =~ s/[^a-z]//g;
|
||||
return $_ if length($tmp) < 4;
|
||||
#foreach my $skip (qw(
|
||||
# bad heh ooh
|
||||
#)) {
|
||||
# return $_ if $tmp eq $skip;
|
||||
#}
|
||||
|
||||
# skip rules:
|
||||
foreach my $suf (qw( e ng ing ed es ah l er )) {
|
||||
if(/$suf[sS]*$/i) {
|
||||
return $_;
|
||||
}
|
||||
}
|
||||
|
||||
my $out = $_;
|
||||
|
||||
# special cases where a consonant gets doubled
|
||||
return('whatte') if ($tmp eq 'what');
|
||||
|
||||
# letters that end words that get doubled
|
||||
# i.e. l as in 'lol'->'lolle'
|
||||
foreach my $suf (qw( l g m n et p r )) {
|
||||
if(/${suf}[sS]*$/i) {
|
||||
return double_laste($_);
|
||||
} else {
|
||||
next;
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
# letters that end words that just get 'e'
|
||||
# i.e. k as in 'fuck'->'fucke'
|
||||
foreach my $suf (qw( d k h t )) {
|
||||
if(/$suf[sS]*$/i) {
|
||||
return single_laste($_);
|
||||
} else {
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
# if we got this far, just return the original word unmodified
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub single_laste {
|
||||
local $_ = shift;
|
||||
my $s = '';
|
||||
if(/s$/i) { $s = 's'; s/s$//; }
|
||||
return($_ . 'e' .$s);
|
||||
}
|
||||
|
||||
sub double_laste {
|
||||
local $_ = shift;
|
||||
my $s = '';
|
||||
if(/s$/i) { $s = 's'; s/s$//; }
|
||||
/([a-zA-Z])$/;
|
||||
my $last = $1;
|
||||
$last = '' if /${last}${last}$/;
|
||||
return($_ . $last . 'e' . $s);
|
||||
}
|
||||
|
||||
Irssi::signal_add('send text' => 'send_text');
|
||||
Reference in New Issue
Block a user