r35159 - /trunk/dh-make-perl/lib/Debian/Dependency.pm

dmn at users.alioth.debian.org dmn at users.alioth.debian.org
Mon May 11 10:20:30 UTC 2009


Author: dmn
Date: Mon May 11 10:20:26 2009
New Revision: 35159

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=35159
Log:
Dependency::new: set initialization values one by one

we have custom behaviour in overriden set() and we want it to be used
during construction too

Modified:
    trunk/dh-make-perl/lib/Debian/Dependency.pm

Modified: trunk/dh-make-perl/lib/Debian/Dependency.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/dh-make-perl/lib/Debian/Dependency.pm?rev=35159&op=diff
==============================================================================
--- trunk/dh-make-perl/lib/Debian/Dependency.pm (original)
+++ trunk/dh-make-perl/lib/Debian/Dependency.pm Mon May 11 10:20:26 2009
@@ -69,18 +69,47 @@
     my $class = shift;
     $class = ref($class) if ref($class);
 
-    return $class->SUPER::new(@_) if ref( $_[0] );
-
-    return $class->parse( $_[0] )
-        if @_ == 1;
-
-    return $class->SUPER::new( { pkg => $_[0], rel => '>=', ver => $_[1] } )
-        if @_ == 2;
-
-    return $class->SUPER::new( { pkg => $_[0], rel => $_[1], ver => $_[2] } )
-        if @_ == 3;
-
-    die "Unsupported number of arguments";
+    my $self = $class->SUPER::new();
+    my( $pkg, $rel, $ver );
+
+    if( ref($_[0]) ) {
+        $pkg = delete $_[0]->{pkg};
+        $rel = delete $_[0]->{rel};
+        $ver = delete $_[0]->{ver};
+        # pass-through the rest
+        while( my($k,$v) = each %{$_[0]} ) {
+            $self->$k($v);
+        }
+    }
+    elsif( @_ == 1 ) {
+        return $class->parse($_[0]);
+    }
+    elsif( @_ == 2 ) {
+        $pkg = shift;
+        $rel = '>=';
+        $ver = shift;
+    }
+    elsif( @_ == 3 ) {
+        ( $pkg, $rel, $ver ) = @_;
+    }
+    else {
+        die "Unsupported number of arguments";
+    }
+
+    $self->ver($ver);
+
+    unless( defined( $self->ver ) ) {
+        undef($rel);
+        delete $self->{ver};
+    };
+
+    $self->rel($rel) if $rel;
+
+    die "pkg is mandatory" unless $pkg;
+
+    $self->pkg($pkg);
+
+    return $self;
 }
 
 sub _stringify {




More information about the Pkg-perl-cvs-commits mailing list