Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
75 lines (55 sloc) 1.77 KB
# Nickmix - Perturbates given nick (or just a word) in certain way.
#
# $Id: nickmix.pl,v 1.2 2002/02/09 22:13:12 pasky Exp pasky $
use strict;
use vars qw ($VERSION %IRSSI $rcsid);
$rcsid = '$Id: nickmix.pl,v 1.2 2002/02/09 22:13:12 pasky Exp pasky $';
($VERSION) = '$Revision: 1.2 $' =~ / (\d+\.\d+) /;
%IRSSI = (
name => 'nickmix',
authors => 'Petr Baudis',
contact => 'pasky@ji.cz',
url => 'http://pasky.ji.cz/~pasky/dev/irssi/',
license => 'GPLv2, not later',
description => 'Perturbates given nick (or just a word) in certain way.'
);
use Irssi;
use Irssi::Irc;
sub cmd_nickmix {
my ($data) = @_;
my %letters; # letters hash - value is count of letters
my $vstr; # vowels string
my $str; # resulting string
# First load the whole thing into letters hash
map { $letters{$_}++; } split(//, $data);
# Now take the (most of/all) vowels away and compose string from them
foreach (qw(a e i o u y)) {
my $c = int rand($letters{$_} * 4 + 1);
$c = $letters{$_} if ($c > $letters{$_});
$letters{$_} -= $c;
for (; $c; $c--) {
# Either add or prepend
if (rand(2) < 1) {
$vstr .= $_;
} else {
$vstr = $_ . $vstr;
}
}
}
# Position of the $vstr..
my $vpos = int rand (3);
$str = $vstr if (not $vpos);
# Now take the rest and do the same ;)
foreach (keys %letters) { for (; $letters{$_}; $letters{$_}--) {
# Either add or prepend
if (rand(2) < 1) {
$str .= $_;
} else {
$str = $_ . $str;
}
} }
if ($vpos == 1) { $str .= $vstr; } elsif ($vpos == 2) { $str = $vstr . $str; }
Irssi::print "$data -> $str";
}
Irssi::command_bind("nickmix", "cmd_nickmix");
Irssi::print("Nickmix $VERSION loaded...");
You can’t perform that action at this time.