[SCM] libpackage-variant-perl Debian packaging branch, master, updated. debian/1.001003-1-16-g363631d

Matt S Trout mst at shadowcat.co.uk
Thu May 9 17:13:59 UTC 2013


The following commit has been merged in the master branch:
commit ed98a1a0b8fc2c05dabc10358806dd7447faf57a
Author: Matt S Trout <mst at shadowcat.co.uk>
Date:   Sat May 12 00:31:07 2012 +0000

    namification

diff --git a/Changes b/Changes
index aab8f9c..a57045c 100644
--- a/Changes
+++ b/Changes
@@ -1,2 +1,4 @@
+  - Use Sub::Name to name installed things if available
+
 1.000000 - 2012-01-23
   - initial release
diff --git a/lib/Package/Variant.pm b/lib/Package/Variant.pm
index 55dd25c..87c0d74 100644
--- a/lib/Package/Variant.pm
+++ b/lib/Package/Variant.pm
@@ -47,6 +47,10 @@ my $sanitize_importing = sub {
   return \@imports;
 };
 
+my $sub_namer = eval {
+  require Sub::Name; sub { shift if @_ > 2; Sub::Name::subname(@_) }
+} || sub { $_[-1] };
+
 sub import {
   my $target = caller;
   my $me = shift;
@@ -108,9 +112,12 @@ sub build_variant_of {
   my $subs = $Variable{$variable}{subs};
   local @{$subs}{keys %$subs} = map $variant_name->can($_), keys %$subs;
   local $Variable{$variable}{install} = sub {
-    my ($name, $ref) = @_;
+    my $full_name = "${variant_name}::".shift;
+
+    my $ref = $sub_namer->($full_name, @_);
+    
     no strict 'refs';
-    *{"${variant_name}::${name}"} = $ref;
+    *$full_name = $ref;
   };
   $variable->make_variant($variant_name, @args);
   return $variant_name;

-- 
libpackage-variant-perl Debian packaging



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