NAME

mcoder - perl method generator from common templates

SYNOPSIS

package MyClass;

use mcoder [qw(get set)] => [qw(color sound height)], \
         proxy => [qw(runner run walk stop)], \
         calculated => weight;

sub _calculate_weight { shift->ask_weight }

ABSTRACT

generate common templated methods like accessors, proxies, etc.

DESCRIPTION

mcoder usage is:

use mcoder $type1 => $arg1, $type2 => $arg2, ...;
use mcoder [$type11, $type12, $type13,...] => $arg1, ...;

where $type/$arg pairs can be:

get
use mcoder get => $name;
use mcoder get => { $name1 => $attr1, $name2 => $attr2, ... };
use mcoder get => [$name1, $name2, $name3, ...];

generate read accessors that returns the value in $self->{$name} or $self->{$attr} or $self->$attr.

set
use mcoder set => $name;
use mcoder set => { $name1 => $attr1, $name2 => $attr2, ... };
use mcoder set => [$name1, $name2, $name3, ...];

generate write accessors named as set_$name.

calculated
use mcoder set => $name;
use mcoder set => { $name1 => $attr1, $name2 => $attr2, ... };
use mcoder set => [$name1, $name2, $name3, ...];

similar to read accessors (set) but when the value is unexistant, method _calculate_$name is called and its result cached.

proxy
use mcoder proxy => [$delegate, $name1, $name2, $name3];
use mcoder proxy => [$delegate, { $name1 => $del_method1,
                                $name2 => $del_method2, ... } ];

forward method calls to $self->$delegate->$del_method

delete
use mcoder delete => $name;
use mcoder delete => { $name1 => $attr1, $name2 => $attr2, ... };
use mcoder delete => [$name1, $name2, $name3, ...];
undef
use mcoder undef => $name;
use mcoder undef => { $name1 => $attr1, $name2 => $attr2, ... };
use mcoder undef => [$name1, $name2, $name3, ...];
new
use mcoder new => $name;

generates a simple constructor for a hash based object

EXPORT

whatever you ask ;-)

SEE ALSO

mcoder::set, mcoder::get, mcoder::calculated, mcoder::proxy are syntactic sugar for this module.

Class::MethodMaker has a similar functionality.

AUTHOR

Salvador Fandiño, <sfandino@yahoo.com>

COPYRIGHT AND LICENSE

Copyright 2003 by Salvador Fandiño

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 219:

Non-ASCII character seen before =encoding in 'Fandiño,'. Assuming CP1252