Alice
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Alice/IRC.pm view on Meta::CPAN
}
sub is_disconnected {
my $self = shift;
return !($self->is_connected or $self->is_connecting);
}
sub nick {
my $self = shift;
my $nick = $self->cl->nick;
}
sub nick_avatar {
my $self = shift;
return $self->avatars->{$_[0]} || "";
}
sub channels {
my $self = shift;
return keys %{$self->cl->channel_list};
}
sub channel_nicks {
my ($self, $channel, $mode) = @_;
my $nicks = $self->cl->channel_list($channel);
return map {
$mode ? $self->prefix_from_modes($_, $nicks->{$_}).$_ : $_;
} keys %$nicks;
}
sub prefix_from_modes {
my ($self, $nick, $modes) = @_;
for my $mode (keys %$modes) {
if (my $prefix = $self->cl->map_mode_to_prefix($mode)) {
return $prefix;
}
}
return "";
}
sub nick_channels {
my ($self, $nick) = @_;
grep {any {$nick eq $_} $self->channel_nicks($_)} $self->channels;
}
sub realname_avatar {
my ($self, $realname) = @_;
if ($realname =~ $email_re) {
my $email = $1;
return "http://www.gravatar.com/avatar/"
. md5_hex($email) . "?s=32&r=x";
}
elsif ($realname =~ $image_re) {
return $1;
}
return ();
}
sub update_realname {
my ($self, $realname) = @_;
$self->send_srv(REALNAME => $realname);
$self->avatars->{$self->nick} = $self->realname_avatar($realname);
}
sub is_channel {
my ($self, $channel) = @_;
return $self->cl->is_channel_name($channel);
}
sub split_unicode_string {
my ($enc, $str, $maxlen) = @_;
return $str unless length (encode ($enc, $str)) > $maxlen;
my $cur_out = '';
my $word = '';
my @lines;
while (length ($str) > 0) {
$word .= substr $str, 0, 1, '';
if ($word =~ /\w\W$/
|| length ($str) == 0
|| length ( encode ($enc, $word)) >= $maxlen) {
if (length (encode ($enc, $cur_out.$word)) > $maxlen) {
push @lines, $cur_out;
$cur_out = '';
}
$cur_out .= $word;
$word = '';
}
}
push @lines, $cur_out if length ($cur_out);
return @lines;
}
sub mk_msg {
encode "utf8", AnyEvent::IRC::Util::mk_msg(@_);
}
__PACKAGE__->meta->make_immutable;
1;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.120 second using v1.00-cache-2.02-grep-82fe00e-cpan-1310916c57ae )