]> git.vpit.fr Git - perl/scripts/xchat.git/commitdiff
Xchat::XPI->new options handling overhaul
authorVincent Pit <vince@profvince.com>
Sat, 10 Mar 2012 10:33:03 +0000 (11:33 +0100)
committerVincent Pit <vince@profvince.com>
Sat, 10 Mar 2012 10:33:03 +0000 (11:33 +0100)
Xchat/XPI.pm

index 6927d83b59e83e425ff03143dec7e70072c8c1e9..7481f5c0ac88c395510243a5a5758e5f39fcea70 100644 (file)
@@ -24,18 +24,27 @@ sub new {
  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, @_;