Class::MakeMethods::Composite::Universal man page on Pidora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Pidora logo
[printable version]

MakeMethods::CompositeUseriContributed PerMakeMethods::Composite::Universal(3)

NAME
       Class::MakeMethods::Composite::Universal - Composite Method Tricks

SYNOPSIS
	 Class::MakeMethods::Composite::Universal->make_patch(
	   -TargetClass => 'SomeClass::OverYonder',
	   name => 'foo',
	   pre_rules => [
	     sub {
	       my $method = pop;
	       warn "Arguments for foo:", @_
	     }
	   ]
	   post_rules => [
	     sub {
	       warn "Result of foo:", Class::MakeMethods::Composite->CurrentResults
	     }
	   ]
	 );

DESCRIPTION
       The Composite::Universal suclass of MakeMethods provides some
       generally-applicable types of methods based on
       Class::MakeMethods::Composite.

METHOD GENERATOR TYPES
   patch
       The patch ruleset generates composites whose core behavior is based on
       an existing subroutine.

       Here's a sample usage:

	 sub foo {
	   my $count = shift;
	   return 'foo' x $count;
	 }

	 Class::MakeMethods::Composite::Universal->make(
	   -ForceInstall => 1,
	   patch => {
	     name => 'foo',
	     pre_rules => [
	       sub {
		 my $method = pop @_;
		 if ( ! scalar @_ ) {
		   @{ $method->{args} } = ( 2 );
		 }
	       },
	       sub {
		 my $method = pop @_;
		 my $count = shift;
		 if ( $count > 99 ) {
		   Carp::confess "Won't foo '$count' -- that's too many!"
		 }
	       },
	     ],
	     post_rules => [
	       sub {
		 my $method = pop @_;
		 if ( ref $method->{result} eq 'SCALAR' ) {
		   ${ $method->{result} } =~ s/oof/oozle-f/g;
		 } elsif ( ref $method->{result} eq 'ARRAY' ) {
		   map { s/oof/oozle-f/g } @{ $method->{result} };
		 }
	       }
	     ],
	   },
	 );

   make_patch
       A convenient wrapper for "make()" and the "patch" method generator.

       Provides the '-ForceInstall' flag, which is required to ensure that the
       patched subroutine replaces the original.

       For example, one could add logging to an existing method as follows:

	 Class::MakeMethods::Composite::Universal->make_patch(
	   -TargetClass => 'SomeClass::OverYonder',
	   name => 'foo',
	   pre_rules => [
	     sub {
	       my $method = pop;
	       warn "Arguments for foo:", @_
	     }
	   ]
	   post_rules => [
	     sub {
	       warn "Result of foo:", Class::MakeMethods::Composite->CurrentResults
	     }
	   ]
	 );

SEE ALSO
       See Class::MakeMethods for general information about this distribution.

       See Class::MakeMethods::Composite for more about this family of
       subclasses.

perl v5.14.2			  2004-09-MakeMethods::Composite::Universal(3)
[top]

List of man pages available for Pidora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net