r2474 - in packages/libdata-visitor-perl/trunk: . debian lib/Data
lib/Data/Visitor
Krzysztof Krzyzaniak
eloy at costa.debian.org
Thu Mar 23 09:33:20 UTC 2006
Author: eloy
Date: 2006-03-23 09:33:19 +0000 (Thu, 23 Mar 2006)
New Revision: 2474
Modified:
packages/libdata-visitor-perl/trunk/Build.PL
packages/libdata-visitor-perl/trunk/Changes
packages/libdata-visitor-perl/trunk/META.yml
packages/libdata-visitor-perl/trunk/Makefile.PL
packages/libdata-visitor-perl/trunk/SIGNATURE
packages/libdata-visitor-perl/trunk/debian/changelog
packages/libdata-visitor-perl/trunk/lib/Data/Visitor.pm
packages/libdata-visitor-perl/trunk/lib/Data/Visitor/Callback.pm
Log:
eloy: new upstream version
Modified: packages/libdata-visitor-perl/trunk/Build.PL
===================================================================
--- packages/libdata-visitor-perl/trunk/Build.PL 2006-03-23 09:32:24 UTC (rev 2473)
+++ packages/libdata-visitor-perl/trunk/Build.PL 2006-03-23 09:33:19 UTC (rev 2474)
@@ -14,6 +14,7 @@
'Test::More' => 0,
'Test::use::ok' => 0,
'Test::MockObject::Extends' => 0,
+ 'Class::Accessor' => 0,
},
create_makefile_pl => 'traditional',
sign => 1,
Modified: packages/libdata-visitor-perl/trunk/Changes
===================================================================
--- packages/libdata-visitor-perl/trunk/Changes 2006-03-23 09:32:24 UTC (rev 2473)
+++ packages/libdata-visitor-perl/trunk/Changes 2006-03-23 09:33:19 UTC (rev 2474)
@@ -1,8 +1,11 @@
+0.03
+ - add Class::Accessor to requirements
+
0.02
- Added GLOB recursion support
- Added support for circular references
- _ Added aliasing to $_ to Data::Validator::Callback
- - Added ignore_return_values to Data::Validator::Callback
+ _ Added aliasing to $_ to Data::Visitor::Callback
+ - Added ignore_return_values to Data::Visitor::Callback
0.01
- Initial release
Modified: packages/libdata-visitor-perl/trunk/META.yml
===================================================================
--- packages/libdata-visitor-perl/trunk/META.yml 2006-03-23 09:32:24 UTC (rev 2473)
+++ packages/libdata-visitor-perl/trunk/META.yml 2006-03-23 09:33:19 UTC (rev 2474)
@@ -1,20 +1,21 @@
---
name: Data-Visitor
-version: 0.02
+version: 0.03
author:
- - Yuval Kogman <nothingmuch at woobling.org>
-abstract: A visitor for Perl data structures
+ - 'Yuval Kogman <nothingmuch at woobling.org>'
+abstract: Visitor style traversal of Perl data structures
license: perl
requires:
- perl: >= 5.008
+ perl: '>= 5.008'
build_requires:
+ Class::Accessor: 0
Test::MockObject::Extends: 0
Test::More: 0
Test::use::ok: 0
provides:
Data::Visitor:
file: lib/Data/Visitor.pm
- version: 0.02
+ version: 0.03
Data::Visitor::Callback:
file: lib/Data/Visitor/Callback.pm
generated_by: Module::Build version 0.2611
Modified: packages/libdata-visitor-perl/trunk/Makefile.PL
===================================================================
--- packages/libdata-visitor-perl/trunk/Makefile.PL 2006-03-23 09:32:24 UTC (rev 2473)
+++ packages/libdata-visitor-perl/trunk/Makefile.PL 2006-03-23 09:33:19 UTC (rev 2474)
@@ -5,6 +5,7 @@
'NAME' => 'Data::Visitor',
'VERSION_FROM' => 'lib/Data/Visitor.pm',
'PREREQ_PM' => {
+ 'Class::Accessor' => '0',
'Test::MockObject::Extends' => '0',
'Test::More' => '0',
'Test::use::ok' => '0'
Modified: packages/libdata-visitor-perl/trunk/SIGNATURE
===================================================================
--- packages/libdata-visitor-perl/trunk/SIGNATURE 2006-03-23 09:32:24 UTC (rev 2473)
+++ packages/libdata-visitor-perl/trunk/SIGNATURE 2006-03-23 09:33:19 UTC (rev 2474)
@@ -14,13 +14,13 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-SHA1 509a2daff64fcfa5a4a109578346ff9f79ecc99a Build.PL
-SHA1 d5d114531fb520cbdb372878b633e02f255b9110 Changes
+SHA1 6acdcb3e5260c1a746fd48533dc17ba72e1f5378 Build.PL
+SHA1 be32607b7a2f711422e6f4fc73118d525724dd92 Changes
SHA1 d33439f719d6ad2cdb0499da44fc467ff9f27e5e MANIFEST
-SHA1 c04f14de3bb1aaa12d7f0ad297f0da80da89b000 META.yml
-SHA1 fcb5f51df9e299fd51478dff38d67a4dd65bf906 Makefile.PL
-SHA1 7a8f0e6022a67be17480e88b0fd5be54b7c5fba1 lib/Data/Visitor.pm
-SHA1 b84b6142f70c62b81efe4af2712f11256994c7f0 lib/Data/Visitor/Callback.pm
+SHA1 2c1a47ac7f2a15741d0a98b7b9278060fd8b743a META.yml
+SHA1 79929ca0e4a1ae67730f00f5fcfd0902cb95f0c6 Makefile.PL
+SHA1 9e15b20c8e5a6896d92e07c831e03fada94db2c0 lib/Data/Visitor.pm
+SHA1 5713e1145bf7b9a3a81564d42e73148b445cb718 lib/Data/Visitor/Callback.pm
SHA1 3180f412df2834d1f1c9290e9b8726d0b374afc2 t/base.t
SHA1 915e0a329acabb60b35f61ffef7d97a8bee57da0 t/callback.t
SHA1 7e59409671d0147236beef17a6dfdc0997d6a97a t/callback_aliasing.t
@@ -29,7 +29,7 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
-iD8DBQFD6hXnVCwRwOvSdBgRAiasAJwIV3Jxh+j2IFEKM2+knGEExVRVYwCfSBRM
-1eGOoQAoLt93LbJIbKqG+6A=
-=tdR5
+iD8DBQFEIdNEVCwRwOvSdBgRAjy4AKC6n+sETKKcdrfKDzShdAVAbZkMzgCeNMow
+IgMrVyHgfQkSs3kW3S8DbjM=
+=LJxS
-----END PGP SIGNATURE-----
Modified: packages/libdata-visitor-perl/trunk/debian/changelog
===================================================================
--- packages/libdata-visitor-perl/trunk/debian/changelog 2006-03-23 09:32:24 UTC (rev 2473)
+++ packages/libdata-visitor-perl/trunk/debian/changelog 2006-03-23 09:33:19 UTC (rev 2474)
@@ -1,3 +1,9 @@
+libdata-visitor-perl (0.03-1) unstable; urgency=low
+
+ * New upstream release
+
+ -- Krzysztof Krzyzaniak (eloy) <eloy at debian.org> Thu, 23 Mar 2006 10:32:30 +0100
+
libdata-visitor-perl (0.02-2) unstable; urgency=low
* debian/control - added libclass-accessor-perl to dependencies
Modified: packages/libdata-visitor-perl/trunk/lib/Data/Visitor/Callback.pm
===================================================================
--- packages/libdata-visitor-perl/trunk/lib/Data/Visitor/Callback.pm 2006-03-23 09:32:24 UTC (rev 2473)
+++ packages/libdata-visitor-perl/trunk/lib/Data/Visitor/Callback.pm 2006-03-23 09:33:19 UTC (rev 2474)
@@ -16,11 +16,10 @@
$ignore_ret = delete $callbacks{ignore_return_values};
}
- my $self = $class->SUPER::new();
-
- $self->callbacks( \%callbacks );
-
- $self;
+ $class->SUPER::new({
+ ignore_return_values => $ignore_ret,
+ callbacks => \%callbacks,
+ });
}
sub visit {
@@ -111,7 +110,7 @@
When this is true (off by default) the return values from the callbacks are
ignored, thus disabling the fmapping behavior as documented in
-L<Data::Validator>.
+L<Data::Visitor>.
This is useful when you want to modify $_ directly
@@ -144,7 +143,7 @@
=item value
-Called for non objects, non aggregate (hash, array) values.
+Called for non objects, non container (hash, array, glob or scalar ref) values.
=item ref_value
@@ -166,6 +165,14 @@
Called for hash references.
+=item glob
+
+Called for glob references.
+
+=item scalar
+
+Called for scalar references.
+
=back
=head1 AUTHOR
Modified: packages/libdata-visitor-perl/trunk/lib/Data/Visitor.pm
===================================================================
--- packages/libdata-visitor-perl/trunk/lib/Data/Visitor.pm 2006-03-23 09:32:24 UTC (rev 2473)
+++ packages/libdata-visitor-perl/trunk/lib/Data/Visitor.pm 2006-03-23 09:33:19 UTC (rev 2474)
@@ -10,7 +10,7 @@
use overload ();
use Symbol ();
-our $VERSION = "0.02";
+our $VERSION = "0.03";
sub visit {
my ( $self, $data ) = @_;
@@ -86,25 +86,37 @@
=head1 NAME
-Data::Visitor - A visitor for Perl data structures
+Data::Visitor - Visitor style traversal of Perl data structures
=head1 SYNOPSIS
+ # NOTE
+ # You probably want to use Data::Visitor::Callback for trivial things
+
+ package FooCounter;
use base qw/Data::Visitor/;
+ BEGIN { __PACKAGE__->mk_accessors( "number_of_foos" ) };
+
sub visit_value {
my ( $self, $data ) = @_;
- return $whatever;
+ if ( defined $data and $data eq "foo" ) {
+ $self->number_of_foos( ($self->number_of_foos || 0) + 1 );
+ }
+
+ return $data;
}
- sub visit_array {
- my ( $self, $data ) = @_;
+ my $counter = FooCounter->new;
- # ...
+ $counter->visit( {
+ this => "that",
+ some_foos => [ qw/foo foo bar foo/ ],
+ the_other => "foo",
+ });
- return $self->SUPER::visit_array( $whatever );
- }
+ $counter->number_of_foos; # this is now 4
=head1 DESCRIPTION
@@ -113,8 +125,6 @@
It has a main dispatcher method, C<visit>, which takes a single perl value and
then calls the methods appropriate for that value.
-The visitor pattern is
-
=head1 METHODS
=over 4
@@ -131,8 +141,14 @@
=item visit_array $array_ref
-This method is called when the value is an array reference.
+=item visit_hash $hash_ref
+=item visit_glob $glob_ref
+
+=item visit_scalar $scalar_ref
+
+These methods are called for the corresponding container type.
+
=item visit_value $value
If the value is anything else, this method is called. The base implementation
@@ -151,7 +167,7 @@
=head1 SUBCLASSING
-Create instance data using the L<Class::Accessor> interface. L<Data::Validator>
+Create instance data using the L<Class::Accessor> interface. L<Data::Visitor>
inherits L<Class::Accessor> to get a sane C<new>.
Then override the callback methods in any way you like. To retain visitor
@@ -162,6 +178,10 @@
L<Tree::Simple::VisitorFactory>, L<Data::Traverse>
+L<http://en.wikipedia.org/wiki/Visitor_pattern>,
+L<http://www.ninebynine.org/Software/Learning-Haskell-Notes.html#functors>,
+L<http://en.wikipedia.org/wiki/Functor>
+
=head1 AUTHOR
Yuval Kogman <nothingmuch at woobling.org>
More information about the Pkg-perl-cvs-commits
mailing list