r2472 - in packages/libdata-visitor-perl/branches/upstream/current: . lib/Data lib/Data/Visitor

Krzysztof Krzyzaniak eloy at costa.debian.org
Thu Mar 23 09:32:20 UTC 2006


Author: eloy
Date: 2006-03-23 09:32:19 +0000 (Thu, 23 Mar 2006)
New Revision: 2472

Modified:
   packages/libdata-visitor-perl/branches/upstream/current/Build.PL
   packages/libdata-visitor-perl/branches/upstream/current/Changes
   packages/libdata-visitor-perl/branches/upstream/current/META.yml
   packages/libdata-visitor-perl/branches/upstream/current/Makefile.PL
   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
Log:
Load /tmp/tmp.derB0A/libdata-visitor-perl-0.03 into
packages/libdata-visitor-perl/branches/upstream/current.


Modified: packages/libdata-visitor-perl/branches/upstream/current/Build.PL
===================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/Build.PL	2006-03-22 22:43:41 UTC (rev 2471)
+++ packages/libdata-visitor-perl/branches/upstream/current/Build.PL	2006-03-23 09:32:19 UTC (rev 2472)
@@ -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/branches/upstream/current/Changes
===================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/Changes	2006-03-22 22:43:41 UTC (rev 2471)
+++ packages/libdata-visitor-perl/branches/upstream/current/Changes	2006-03-23 09:32:19 UTC (rev 2472)
@@ -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/branches/upstream/current/META.yml
===================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/META.yml	2006-03-22 22:43:41 UTC (rev 2471)
+++ packages/libdata-visitor-perl/branches/upstream/current/META.yml	2006-03-23 09:32:19 UTC (rev 2472)
@@ -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/branches/upstream/current/Makefile.PL
===================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/Makefile.PL	2006-03-22 22:43:41 UTC (rev 2471)
+++ packages/libdata-visitor-perl/branches/upstream/current/Makefile.PL	2006-03-23 09:32:19 UTC (rev 2472)
@@ -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/branches/upstream/current/SIGNATURE
===================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/SIGNATURE	2006-03-22 22:43:41 UTC (rev 2471)
+++ packages/libdata-visitor-perl/branches/upstream/current/SIGNATURE	2006-03-23 09:32:19 UTC (rev 2472)
@@ -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/branches/upstream/current/lib/Data/Visitor/Callback.pm
===================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor/Callback.pm	2006-03-22 22:43:41 UTC (rev 2471)
+++ packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor/Callback.pm	2006-03-23 09:32:19 UTC (rev 2472)
@@ -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/branches/upstream/current/lib/Data/Visitor.pm
===================================================================
--- packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor.pm	2006-03-22 22:43:41 UTC (rev 2471)
+++ packages/libdata-visitor-perl/branches/upstream/current/lib/Data/Visitor.pm	2006-03-23 09:32:19 UTC (rev 2472)
@@ -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