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