App-Alice
view release on metacpan or search on metacpan
lib/App/Alice.pm view on Meta::CPAN
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;
}
};
$self->log(info => "Notifications disabled") unless $notifier;
return $notifier;
}
);
has history => (
is => 'rw',
lazy => 1,
default => sub {
my $self = shift;
my $config = $self->config->path."/log.db";
if (-e $config) {
if ((stat($config))[9] < 1272757679) {
print STDERR "Log schema is out of date, updating\n";
copy($self->config->assetdir."/log.db", $config);
}
}
else {
copy($self->config->assetdir."/log.db", $config);
}
App::Alice::History->new(
dbfile => $self->config->path ."/log.db"
);
},
);
sub store {
my $self = shift;
my %fields = @_;
$fields{user} = $self->user;
$fields{time} = time;
$self->history->store(%fields);
}
has logger => (
is => 'ro',
default => sub {App::Alice::Logger->new},
);
sub log {$_[0]->logger->log($_[1] => $_[2]) if $_[0]->config->show_debug}
has _windows => (
is => 'rw',
isa => 'ArrayRef',
default => sub {[]},
);
sub windows {@{$_[0]->_windows}}
sub add_window {push @{$_[0]->_windows}, $_[1]}
sub has_window {$_[0]->get_window($_[1])}
sub get_window {first {$_->id eq $_[1]} $_[0]->windows}
sub remove_window {$_[0]->_windows([grep {$_->id ne $_[1]} $_[0]->windows])}
sub window_ids {map {$_->id} $_[0]->windows}
has 'template' => (
is => 'ro',
isa => 'Text::MicroTemplate::File',
lazy => 1,
default => sub {
my $self = shift;
Text::MicroTemplate::File->new(
include_path => $self->config->assetdir . '/templates',
cache => 1,
);
},
);
has 'info_window' => (
is => 'ro',
isa => 'App::Alice::InfoWindow',
lazy => 1,
default => sub {
my $self = shift;
( run in 2.059 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )