new upstream version
Krzysztof Krzyzaniak
16 years ago
|
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 |
|
0 | 4 |
0.07
|
1 | 5 |
- Refactor visit_ref
|
2 | 6 |
|
0 | 0 |
--- #YAML:1.0
|
1 | 1 |
name: Data-Visitor
|
2 | |
version: 0.07
|
|
2 |
version: 0.08
|
3 | 3 |
abstract: ~
|
4 | 4 |
license: ~
|
5 | 5 |
generated_by: ExtUtils::MakeMaker version 6.32
|
13 | 13 |
-----BEGIN PGP SIGNED MESSAGE-----
|
14 | 14 |
Hash: SHA1
|
15 | 15 |
|
16 | |
SHA1 667ac3f1e756b7bcc0e9e98357cecdc2012ee399 Changes
|
|
16 |
SHA1 dca53d93193ba234d36fe458a34a22935c0ec0b8 Changes
|
17 | 17 |
SHA1 adbdb1d57cfa058d1ced16b5767527d0dfb6a253 MANIFEST
|
18 | 18 |
SHA1 ddb918d4e02cc06f4b9fe77adeca65403f8fdd56 MANIFEST.SKIP
|
19 | |
SHA1 a47bdd3f338655889573dac063e9fb9055d6bbe8 META.yml
|
|
19 |
SHA1 95e533a541a400b08002b2490c4921764b4c9850 META.yml
|
20 | 20 |
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
|
23 | 23 |
SHA1 3180f412df2834d1f1c9290e9b8726d0b374afc2 t/base.t
|
24 | 24 |
SHA1 257c858e1bc12c1039e93cac62a0d37f2e0d804d t/bugs.t
|
25 | 25 |
SHA1 2ddc55b7127db5216879fce4c165b360923eca18 t/callback.t
|
|
29 | 29 |
-----BEGIN PGP SIGNATURE-----
|
30 | 30 |
Version: GnuPG v1.4.7 (Darwin)
|
31 | 31 |
|
32 | |
iD8DBQFGUFB2VCwRwOvSdBgRAsSOAJ4zAOrJLz7wiecuHnN0upCGUP55tACdGoiB
|
33 | |
Sh+5rF9Z97aq+GgGXu+TG/E=
|
34 | |
=FeeZ
|
|
32 |
iD8DBQFGiAZTVCwRwOvSdBgRAvneAJ0XffiTdaj8HDZZPVvT24h2ruE2WgCgkOyQ
|
|
33 |
htgwmeZ0sb3o0nmFSUGhYJk=
|
|
34 |
=AvZo
|
35 | 35 |
-----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 |
|
0 | 6 |
libdata-visitor-perl (0.07-1) unstable; urgency=low
|
1 | 7 |
|
2 | 8 |
* New upstream release
|
41 | 41 |
|
42 | 42 |
sub visit_object {
|
43 | 43 |
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;
|
45 | 49 |
|
46 | 50 |
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;
|
48 | 54 |
}
|
49 | 55 |
|
50 | 56 |
$data;
|
|
71 | 77 |
my ( $self, $name, $data ) = @_;
|
72 | 78 |
|
73 | 79 |
if ( my $code = $self->callbacks->{$name} ) {
|
74 | |
my $ret = $code->( $self, $data );
|
|
80 |
my $ret = $self->$code( $data );
|
75 | 81 |
return $self->ignore_return_values ? $data : $ret ;
|
76 | 82 |
} else {
|
77 | 83 |
return $data;
|
9 | 9 |
use overload ();
|
10 | 10 |
use Symbol ();
|
11 | 11 |
|
12 | |
our $VERSION = "0.07";
|
|
12 |
our $VERSION = "0.08";
|
13 | 13 |
|
14 | 14 |
sub visit {
|
15 | 15 |
my ( $self, $data ) = @_;
|
|
78 | 78 |
if ( not defined wantarray ) {
|
79 | 79 |
$self->visit( $_ ) for ( values %$hash );
|
80 | 80 |
} else {
|
81 | |
return { map { $_ => $self->visit( $hash->{$_} ) } keys %$hash }
|
|
81 |
return $self->retain_magic( $hash, { map { $_ => $self->visit( $hash->{$_} ) } keys %$hash } );
|
82 | 82 |
}
|
83 | 83 |
}
|
84 | 84 |
|
|
88 | 88 |
if ( not defined wantarray ) {
|
89 | 89 |
$self->visit( $_ ) for @$array;
|
90 | 90 |
} else {
|
91 | |
return [ map { $self->visit( $_ ) } @$array ];
|
|
91 |
return $self->retain_magic( $array, [ map { $self->visit( $_ ) } @$array ] );
|
92 | 92 |
}
|
93 | 93 |
}
|
94 | 94 |
|
95 | 95 |
sub visit_scalar {
|
96 | 96 |
my ( $self, $scalar ) = @_;
|
97 | |
return \$self->visit( $$scalar );
|
|
97 |
return $self->retain_magic( $scalar, \$self->visit( $$scalar ) );
|
98 | 98 |
}
|
99 | 99 |
|
100 | 100 |
sub visit_glob {
|
|
105 | 105 |
no warnings 'misc'; # Undefined value assigned to typeglob
|
106 | 106 |
*$new_glob = $self->visit( *$glob{$_} || next ) for qw/SCALAR ARRAY HASH/;
|
107 | 107 |
|
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;
|
109 | 121 |
}
|
110 | 122 |
|
111 | 123 |
__PACKAGE__;
|