r29448 - in /trunk/dh-make-perl: lib/Debian/Dependencies.pm t/Dependencies.t

dmn at users.alioth.debian.org dmn at users.alioth.debian.org
Wed Jan 7 21:05:32 UTC 2009


Author: dmn
Date: Wed Jan  7 21:05:29 2009
New Revision: 29448

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=29448
Log:
Dependencies: overload '+' and '+='

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

Modified: trunk/dh-make-perl/lib/Debian/Dependencies.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/dh-make-perl/lib/Debian/Dependencies.pm?rev=29448&op=diff
==============================================================================
--- trunk/dh-make-perl/lib/Debian/Dependencies.pm (original)
+++ trunk/dh-make-perl/lib/Debian/Dependencies.pm Wed Jan  7 21:05:29 2009
@@ -6,7 +6,8 @@
 use AptPkg::Config;
 use Debian::Dependency;
 
-use overload '""'   => \&_stringify;
+use overload '""'   => \&_stringify,
+             '+'    => \&_add;
 
 =head1 NAME
 
@@ -18,6 +19,20 @@
     print $dl->[1]->ver;      # 3.4
     print $dl->[1];           # libfoo-perl (>= 3.4)
     print $dl;                # perl, libfoo-perl (>= 3.4)
+
+    $dl += 'libbar-perl';
+    print $dl;                # perl, libfoo-perl (>= 3.4), libbar-perl
+
+    print Debian::Dependencies->new('perl') + 'libfoo-bar-perl';
+                              # simple 'sum'
+
+    print Debian::Dependencies->new('perl')
+          + Debian::Dependencies->new('libfoo, libbar');
+                              # add (concatenate) two lists
+
+    print Debian::Dependencies->new('perl')
+          + Debian::Dependency->new('foo');
+                              # add depeendency to a list
 
 =head1 DESCRIPTION
 
@@ -62,6 +77,23 @@
     my $self = shift;
 
     return join( ', ', @$self );
+}
+
+sub _add {
+    my $left = shift;
+    my $right = shift;
+    my $mode = shift;
+
+    $right = $left->new($right) unless ref($right);
+    $right = [ $right ] if $right->isa('Debian::Dependency');
+
+    if ( defined $mode ) {      # $a + $b
+        return bless [ @$left, @$right ], ref($left);
+    }
+    else {                      # $a += $b;
+        push @$left, @$right;
+        $left;
+    }
 }
 
 =back

Modified: trunk/dh-make-perl/t/Dependencies.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/dh-make-perl/t/Dependencies.t?rev=29448&op=diff
==============================================================================
--- trunk/dh-make-perl/t/Dependencies.t (original)
+++ trunk/dh-make-perl/t/Dependencies.t Wed Jan  7 21:05:29 2009
@@ -27,3 +27,24 @@
     ),
     'Dependencies list parsed' );
 is( "$list", $dep_string, 'Dependencies stringifies' );
+
+my $sum = $list + 'libsome-perl (>= 4.4)';
+cmp_deeply(
+    $sum->[3],
+    bless(
+        {
+            pkg=>'libsome-perl',
+            rel=>'>=',
+            ver=>'4.4',
+        },
+        'Debian::Dependency',
+    ),
+    'Adding to a Dependencies',
+);
+
+$list += 'libother-perl';
+cmp_deeply(
+    $list->[3],
+    bless( { pkg => 'libother-perl' }, 'Debian::Dependency' ),
+    '+= works',
+);




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