Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

class::makemethods::composite(3pm) [debian man page]

MakeMethods::Composite(3pm)				User Contributed Perl Documentation			       MakeMethods::Composite(3pm)

NAME
Class::MakeMethods::Composite - Make extensible compound methods SYNOPSIS
package MyObject; use Class::MakeMethods::Composite::Hash ( new => 'new', scalar => [ 'foo', 'bar' ], array => 'my_list', hash => 'my_index', ); DESCRIPTION
This document describes the various subclasses of Class::MakeMethods included under the Composite::* namespace, and the method types each one provides. The Composite subclasses provide a parameterized set of method-generation implementations. Subroutines are generated as closures bound to a hash containing the method name and additional parameters, including the arrays of subroutine references that will provide the method's functionality. Calling Conventions When you "use" this package, the method names you provide as arguments cause subroutines to be generated and installed in your module. See "Calling Conventions" in Class::MakeMethods::Standard for more information. Declaration Syntax To declare methods, pass in pairs of a method-type name followed by one or more method names. Valid method-type names for this package are listed in "METHOD GENERATOR TYPES". See "Declaration Syntax" in Class::MakeMethods::Standard and "Parameter Syntax" in Class::MakeMethods::Standard for more information. About Composite Methods The methods generated by Class::MakeMethods::Composite are assembled from groups of "fragment" subroutines, each of which provides some aspect of the method's behavior. You can add pre- and post- operations to any composite method. package MyObject; use Class::MakeMethods::Composite::Hash ( new => 'new', scalar => [ 'foo' => { 'pre_rules' => [ sub { # Don't automatically convert list to array-ref croak "Too many arguments" if ( scalar @_ > 2 ); } ], 'post_rules' => [ sub { # Don't let anyone see my credit card number! ${(pop)->{result}} =~ s/d{13,16}/****/g; } ], } ], ); SEE ALSO
See Class::MakeMethods for general information about this distribution. For distribution, installation, support, copyright and license information, see Class::MakeMethods::Docs::ReadMe. perl v5.10.1 2004-09-06 MakeMethods::Composite(3pm)

Check Out this Related Man Page

MakeMethods::Composite::Universal(3pm)			User Contributed Perl Documentation		    MakeMethods::Composite::Universal(3pm)

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.10.1 2004-09-06 MakeMethods::Composite::Universal(3pm)
Man Page