-
-
07 Sep 2004 21:45:34 UTC
- Distribution: Class-MakeMethods
- Module version: 1
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Issues (5)
- Testers (5047 / 286 / 0)
- Kwalitee
Bus factor: 0- 69.84% Coverage
- License: unknown
- Activity
24 month- Tools
- Download (158.37KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- unknown
- Reverse dependencies
- CPAN Testers List
- Dependency graph
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 thepatch
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.
Module Install Instructions
To install Class::MakeMethods, copy and paste the appropriate command in to your terminal.
cpanm Class::MakeMethods
perl -MCPAN -e shell install Class::MakeMethods
For more information on module installation, please visit the detailed CPAN module installation guide.