use Xchat;
-our $VERSION = '0.04';
+our $VERSION = '0.05';
use constant { COLOR_TAG => "\00307" };
my @attributes;
BEGIN {
- @attributes = qw/tag name version desc author email url banner/;
+ @attributes = qw<tag name version desc author email url banner>;
}
local *PH;
my %opts = @_;
my $caller = (caller 0)[0];
- $opts{tag} ||= ($caller =~ /([^:]*):*$/) ? $1 : 'UNKNOWN';
- $opts{name} ||= $opts{tag};
- $opts{desc} ||= $opts{name};
- $opts{version} ||= do { no strict 'refs'; ${$caller.'::VERSION'} }
- || '0.01';
-
- my $email = $opts{email};
- $email = "<$email>" if defined $email;
-
- my $who = join ', ', grep defined, $opts{author}, $email, $opts{url};
- $who = " ($who)" if length $who;
- $opts{banner} = $opts{desc} . $who;
+ unless (defined $opts{tag}) {
+ $opts{tag} = ($caller =~ /([^:]*):*$/) ? $1 : 'UNKNOWN';
+ }
+ unless (defined $opts{name}) {
+ $opts{name} = $opts{tag};
+ }
+ unless (defined $opts{desc}) {
+ $opts{desc} = $opts{name};
+ }
+ unless (defined $opts{version}) {
+ my $version = do { no strict 'refs'; ${$caller.'::VERSION'} };
+ $version = '0.01' unless defined $version;
+ $opts{version} = $version;
+ }
+ unless (defined $opts{banner}) {
+ my $email = $opts{email};
+ $email = "<$email>" if defined $email;
+ my $who = join ', ', grep defined, $opts{author}, $email, $opts{url};
+ $who = " ($who)" if length $who;
+ $opts{banner} = $opts{desc} . $who;
+ }
my $ph = bless \do { local *PH }, $class;
tie *$ph, $ph, @_;
*$ph->{$_} = $opts{$_} for @attributes;
*$ph->{buf} = '';
- Xchat::register(@opts{qw/name version banner/}, sub {
+ Xchat::register(@opts{qw<name version banner>}, sub {
$ph->flush;
if (*$ph->{atexit_id}) {
my @callbacks = sort { *$ph->{atexit}{$b} <=> *$ph->{atexit}{$a} }
return $ph;
}
-eval "sub $_ { *\$_[0]->{$_} }" for @attributes;
+BEGIN {
+ local $@;
+ eval "sub $_ { my \$ph = \$_[0]; *\$ph->{$_} }; 1" or die $@ for @attributes;
+}
sub print {
my $ph = shift;
sub PRINTF { shift->printf(@_) }
-my $ph = __PACKAGE__->new(
- name => 'Extended Xchat Perl Interface',
- desc => 'Adds extended support for Perl scripts',
- author => 'Vincent Pit (VPIT)',
- email => 'perl@profvince.com',
- url => 'http://www.profvince.com',
-);
-
1;