Codebase list libdata-visitor-perl / f5ca1a5
new upstream version Krzysztof Krzyzaniak 16 years ago
6 changed file(s) with 44 addition(s) and 16 deletion(s). Raw diff Collapse all Expand all
0 0.08
1 - add retain_magic and use it to keep blessedness of mapped objects that
2 were forced into being visited by "regular" ref visitor methods
3
04 0.07
15 - Refactor visit_ref
26
00 --- #YAML:1.0
11 name: Data-Visitor
2 version: 0.07
2 version: 0.08
33 abstract: ~
44 license: ~
55 generated_by: ExtUtils::MakeMaker version 6.32
1313 -----BEGIN PGP SIGNED MESSAGE-----
1414 Hash: SHA1
1515
16 SHA1 667ac3f1e756b7bcc0e9e98357cecdc2012ee399 Changes
16 SHA1 dca53d93193ba234d36fe458a34a22935c0ec0b8 Changes
1717 SHA1 adbdb1d57cfa058d1ced16b5767527d0dfb6a253 MANIFEST
1818 SHA1 ddb918d4e02cc06f4b9fe77adeca65403f8fdd56 MANIFEST.SKIP
19 SHA1 a47bdd3f338655889573dac063e9fb9055d6bbe8 META.yml
19 SHA1 95e533a541a400b08002b2490c4921764b4c9850 META.yml
2020 SHA1 7e820fe45a90871dcc686bd3ffd7897444a6ea30 Makefile.PL
21 SHA1 45b113e7a4fae0ddfc26ff13e9e2d43fc5694b19 lib/Data/Visitor.pm
22 SHA1 daa5c3b3a4d1b917ddf824805e2b8f81b6d24d63 lib/Data/Visitor/Callback.pm
21 SHA1 352cc099c97b13df7b481ad5a6ba6570d535e85a lib/Data/Visitor.pm
22 SHA1 d8ad6965a7e366bfe68c72f7139d606a71fe1a90 lib/Data/Visitor/Callback.pm
2323 SHA1 3180f412df2834d1f1c9290e9b8726d0b374afc2 t/base.t
2424 SHA1 257c858e1bc12c1039e93cac62a0d37f2e0d804d t/bugs.t
2525 SHA1 2ddc55b7127db5216879fce4c165b360923eca18 t/callback.t
2929 -----BEGIN PGP SIGNATURE-----
3030 Version: GnuPG v1.4.7 (Darwin)
3131
32 iD8DBQFGUFB2VCwRwOvSdBgRAsSOAJ4zAOrJLz7wiecuHnN0upCGUP55tACdGoiB
33 Sh+5rF9Z97aq+GgGXu+TG/E=
34 =FeeZ
32 iD8DBQFGiAZTVCwRwOvSdBgRAvneAJ0XffiTdaj8HDZZPVvT24h2ruE2WgCgkOyQ
33 htgwmeZ0sb3o0nmFSUGhYJk=
34 =AvZo
3535 -----END PGP SIGNATURE-----
0 libdata-visitor-perl (0.08-1) unstable; urgency=low
1
2 * New upstream release
3
4 -- Krzysztof Krzyzaniak (eloy) <eloy@debian.org> Wed, 11 Jul 2007 10:17:08 +0200
5
06 libdata-visitor-perl (0.07-1) unstable; urgency=low
17
28 * New upstream release
4141
4242 sub visit_object {
4343 my ( $self, $data ) = @_;
44 $data = $self->callback( object => $data );
44
45 my $ignore = $self->ignore_return_values;
46
47 my $new_data = $self->callback( object => $data );
48 $data = $new_data unless $ignore;
4549
4650 foreach my $class ( @{ $self->class_callbacks } ) {
47 $data = $self->callback( $class => $data ) if $data->isa($class);
51 last unless blessed($data);
52 my $new_data = $self->callback( $class => $data ) if $data->isa($class);
53 $data = $new_data unless $ignore;
4854 }
4955
5056 $data;
7177 my ( $self, $name, $data ) = @_;
7278
7379 if ( my $code = $self->callbacks->{$name} ) {
74 my $ret = $code->( $self, $data );
80 my $ret = $self->$code( $data );
7581 return $self->ignore_return_values ? $data : $ret ;
7682 } else {
7783 return $data;
99 use overload ();
1010 use Symbol ();
1111
12 our $VERSION = "0.07";
12 our $VERSION = "0.08";
1313
1414 sub visit {
1515 my ( $self, $data ) = @_;
7878 if ( not defined wantarray ) {
7979 $self->visit( $_ ) for ( values %$hash );
8080 } else {
81 return { map { $_ => $self->visit( $hash->{$_} ) } keys %$hash }
81 return $self->retain_magic( $hash, { map { $_ => $self->visit( $hash->{$_} ) } keys %$hash } );
8282 }
8383 }
8484
8888 if ( not defined wantarray ) {
8989 $self->visit( $_ ) for @$array;
9090 } else {
91 return [ map { $self->visit( $_ ) } @$array ];
91 return $self->retain_magic( $array, [ map { $self->visit( $_ ) } @$array ] );
9292 }
9393 }
9494
9595 sub visit_scalar {
9696 my ( $self, $scalar ) = @_;
97 return \$self->visit( $$scalar );
97 return $self->retain_magic( $scalar, \$self->visit( $$scalar ) );
9898 }
9999
100100 sub visit_glob {
105105 no warnings 'misc'; # Undefined value assigned to typeglob
106106 *$new_glob = $self->visit( *$glob{$_} || next ) for qw/SCALAR ARRAY HASH/;
107107
108 return $new_glob;
108 return $self->retain_magic( $glob, $new_glob );
109 }
110
111 sub retain_magic {
112 my ( $self, $proto, $new ) = @_;
113
114 if ( blessed($proto) and !blessed($new) ) {
115 bless $new, ref $proto;
116 }
117
118 # FIXME real magic, too
119
120 return $new;
109121 }
110122
111123 __PACKAGE__;