App-Alice
view release on metacpan or search on metacpan
lib/App/Alice.pm view on Meta::CPAN
package App::Alice;
use Text::MicroTemplate::File;
use App::Alice::Window;
use App::Alice::InfoWindow;
use App::Alice::HTTPD;
use App::Alice::IRC;
use App::Alice::Signal;
use App::Alice::Config;
use App::Alice::Logger;
use App::Alice::History;
use Any::Moose;
use File::Copy;
use Digest::MD5 qw/md5_hex/;
use List::Util qw/first/;
use Encode;
our $VERSION = '0.19';
has condvar => (
is => 'rw',
isa => 'AnyEvent::CondVar'
);
has config => (
is => 'ro',
isa => 'App::Alice::Config',
);
has msgid => (
is => 'rw',
isa => 'Int',
default => 1,
);
sub next_msgid {$_[0]->msgid($_[0]->msgid + 1)}
has _ircs => (
is => 'rw',
isa => 'ArrayRef',
default => sub {[]},
);
sub ircs {@{$_[0]->_ircs}}
sub add_irc {push @{$_[0]->_ircs}, $_[1]}
sub has_irc {$_[0]->get_irc($_[1])}
sub get_irc {first {$_->alias eq $_[1]} $_[0]->ircs}
sub remove_irc {$_[0]->_ircs([ grep { $_->alias ne $_[1] } $_[0]->ircs])}
sub irc_aliases {map {$_->alias} $_[0]->ircs}
sub connected_ircs {grep {$_->is_connected} $_[0]->ircs}
has standalone => (
is => 'ro',
isa => 'Bool',
default => 1,
);
has httpd => (
is => 'rw',
isa => 'App::Alice::HTTPD',
lazy => 1,
default => sub {
App::Alice::HTTPD->new(app => shift);
},
);
has commands => (
is => 'ro',
isa => 'App::Alice::Commands',
lazy => 1,
default => sub {
App::Alice::Commands->new(app => shift);
}
);
has notifier => (
is => 'ro',
lazy => 1,
default => sub {
my $self = shift;
my $notifier;
eval {
if ($^O eq 'darwin') {
# 5.10 doesn't seem to put Extras in @INC
# need this for Foundation.pm
if ($] >= 5.01 and -e "/System/Library/Perl/Extras/5.10.0") {
require lib;
lib->import("/System/Library/Perl/Extras/5.10.0");
}
require App::Alice::Notifier::Growl;
$notifier = App::Alice::Notifier::Growl->new;
}
elsif ($^O eq 'linux') {
require App::Alice::Notifier::LibNotify;
$notifier = App::Alice::Notifier::LibNotify->new;
}
( run in 2.034 seconds using v1.01-cache-2.11-cpan-ceb78f64989 )