r5713 - in /packages/libdata-visitor-perl/branches/upstream/current: Changes META.yml SIGNATURE lib/Data/Visitor.pm lib/Data/Visitor/Callback.pm

eloy at users.alioth.debian.org eloy at users.alioth.debian.org
Wed Jul 11 08:16:50 UTC 2007


Author: eloy
Date: Wed Jul 11 08:16:50 2007
New Revision: 5713

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=5713
Log:
[svn-upgrade] Integrating new upstream version, libdata-visitor-perl (0.08)

Modified:
    packages/libdata-visitor-perl/branches/upstream/current/Changes
    packages/libdata-visitor-perl/branches/upstream/current/META.yml
    packages/libdata-visitor-perl/branches/upstream/current/SIGNATURE
    packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor.pm
    packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor/Callback.pm

Modified: packages/libdata-visitor-perl/branches/upstream/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libdata-visitor-perl/branches/upstream/current/Changes?rev=5713&op=diff
==============================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/Changes (original)
+++ packages/libdata-visitor-perl/branches/upstream/current/Changes Wed Jul 11 08:16:50 2007
@@ -1,3 +1,7 @@
+0.08
+	- add retain_magic and use it to keep blessedness of mapped objects that
+	  were forced into being visited by "regular" ref visitor methods
+
 0.07
 	- Refactor visit_ref
 

Modified: packages/libdata-visitor-perl/branches/upstream/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libdata-visitor-perl/branches/upstream/current/META.yml?rev=5713&op=diff
==============================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/META.yml (original)
+++ packages/libdata-visitor-perl/branches/upstream/current/META.yml Wed Jul 11 08:16:50 2007
@@ -1,6 +1,6 @@
 --- #YAML:1.0
 name:                Data-Visitor
-version:             0.07
+version:             0.08
 abstract:            ~
 license:             ~
 generated_by:        ExtUtils::MakeMaker version 6.32

Modified: packages/libdata-visitor-perl/branches/upstream/current/SIGNATURE
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libdata-visitor-perl/branches/upstream/current/SIGNATURE?rev=5713&op=diff
==============================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/SIGNATURE (original)
+++ packages/libdata-visitor-perl/branches/upstream/current/SIGNATURE Wed Jul 11 08:16:50 2007
@@ -14,13 +14,13 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-SHA1 667ac3f1e756b7bcc0e9e98357cecdc2012ee399 Changes
+SHA1 dca53d93193ba234d36fe458a34a22935c0ec0b8 Changes
 SHA1 adbdb1d57cfa058d1ced16b5767527d0dfb6a253 MANIFEST
 SHA1 ddb918d4e02cc06f4b9fe77adeca65403f8fdd56 MANIFEST.SKIP
-SHA1 a47bdd3f338655889573dac063e9fb9055d6bbe8 META.yml
+SHA1 95e533a541a400b08002b2490c4921764b4c9850 META.yml
 SHA1 7e820fe45a90871dcc686bd3ffd7897444a6ea30 Makefile.PL
-SHA1 45b113e7a4fae0ddfc26ff13e9e2d43fc5694b19 lib/Data/Visitor.pm
-SHA1 daa5c3b3a4d1b917ddf824805e2b8f81b6d24d63 lib/Data/Visitor/Callback.pm
+SHA1 352cc099c97b13df7b481ad5a6ba6570d535e85a lib/Data/Visitor.pm
+SHA1 d8ad6965a7e366bfe68c72f7139d606a71fe1a90 lib/Data/Visitor/Callback.pm
 SHA1 3180f412df2834d1f1c9290e9b8726d0b374afc2 t/base.t
 SHA1 257c858e1bc12c1039e93cac62a0d37f2e0d804d t/bugs.t
 SHA1 2ddc55b7127db5216879fce4c165b360923eca18 t/callback.t
@@ -30,7 +30,7 @@
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.7 (Darwin)
 
-iD8DBQFGUFB2VCwRwOvSdBgRAsSOAJ4zAOrJLz7wiecuHnN0upCGUP55tACdGoiB
-Sh+5rF9Z97aq+GgGXu+TG/E=
-=FeeZ
+iD8DBQFGiAZTVCwRwOvSdBgRAvneAJ0XffiTdaj8HDZZPVvT24h2ruE2WgCgkOyQ
+htgwmeZ0sb3o0nmFSUGhYJk=
+=AvZo
 -----END PGP SIGNATURE-----

Modified: packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor.pm?rev=5713&op=diff
==============================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor.pm (original)
+++ packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor.pm Wed Jul 11 08:16:50 2007
@@ -10,7 +10,7 @@
 use overload ();
 use Symbol ();
 
-our $VERSION = "0.07";
+our $VERSION = "0.08";
 
 sub visit {
 	my ( $self, $data ) = @_;
@@ -79,7 +79,7 @@
 	if ( not defined wantarray ) {
 		$self->visit( $_ ) for ( values %$hash );
 	} else {
-		return { map { $_ => $self->visit( $hash->{$_} ) } keys %$hash }
+		return $self->retain_magic( $hash, { map { $_ => $self->visit( $hash->{$_} ) } keys %$hash } );
 	}
 }
 
@@ -89,13 +89,13 @@
 	if ( not defined wantarray ) {
 		$self->visit( $_ ) for @$array;	
 	} else {
-		return [ map { $self->visit( $_ ) } @$array ];
+		return $self->retain_magic( $array, [ map { $self->visit( $_ ) } @$array ] );
 	}
 }
 
 sub visit_scalar {
 	my ( $self, $scalar ) = @_;
-	return \$self->visit( $$scalar );
+	return $self->retain_magic( $scalar, \$self->visit( $$scalar ) );
 }
 
 sub visit_glob {
@@ -106,7 +106,19 @@
 	no warnings 'misc'; # Undefined value assigned to typeglob
 	*$new_glob = $self->visit( *$glob{$_} || next ) for qw/SCALAR ARRAY HASH/;
 
-	return $new_glob;
+	return $self->retain_magic( $glob, $new_glob );
+}
+
+sub retain_magic {
+	my ( $self, $proto, $new ) = @_;
+
+	if ( blessed($proto) and !blessed($new) ) {
+		bless $new, ref $proto;
+	}
+
+	# FIXME real magic, too
+
+	return $new;
 }
 
 __PACKAGE__;

Modified: packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor/Callback.pm
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor/Callback.pm?rev=5713&op=diff
==============================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor/Callback.pm (original)
+++ packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor/Callback.pm Wed Jul 11 08:16:50 2007
@@ -42,10 +42,16 @@
 
 sub visit_object {
 	my ( $self, $data ) = @_;
-	$data = $self->callback( object => $data );
+
+	my $ignore = $self->ignore_return_values;
+
+	my $new_data = $self->callback( object => $data );
+	$data = $new_data unless $ignore;
 
 	foreach my $class ( @{ $self->class_callbacks } ) {
-		$data = $self->callback( $class => $data ) if $data->isa($class);
+		last unless blessed($data);
+		my $new_data = $self->callback( $class => $data ) if $data->isa($class);
+		$data = $new_data unless $ignore;
 	}
 
 	$data;
@@ -72,7 +78,7 @@
 	my ( $self, $name, $data ) = @_;
 
 	if ( my $code = $self->callbacks->{$name} ) {
-		my $ret = $code->( $self, $data );
+		my $ret = $self->$code( $data );
 		return $self->ignore_return_values ? $data : $ret ;
 	} else {
 		return $data;




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