On Fri, 2004-04-30 at 17:58, Austin Hastings wrote:
> class Session
> {
> does ListOfMessages
> (
> attribute_base => 'messages',
> method_base => 'messages',
> display_color => 'black'
> );
>
> does ListOfMessages
> (
> attribute_base => 'errors',
> method_base => 'errors',
> display_color => 'red'
> );
>
> ...
> }
> Can I just do:
>
> role ListOfMessages($attribute_base, $method_base, $display_color) {...}
I think you want a combination of re-dispatch and delegation:
class Session {
role EventHandler {
# The one and only place you define the behavior
method clear() {...}
method add() {...}
method have() {...}
method get() {...}
}
class ErrorHanlder {
does EventHandler;
# Probably should do some funky re-dispatch thing
method clear_errors() { .clear() }
method add_errors() { .add() }
method have_errors() { .have() }
method get_errors() { .get() }
}
class MessageHanlder {
does EventHandler;
method clear_messages() { .clear() }
method add_messages() { .add() }
method have_messages() { .have() }
method get_messages() { .get() }
}
has ErrorHanlder $:errors handles <<clear_errors add_errors
have_errors get_errors>>;
has MessageHandler $:messages handles <<clear_messages add_messages
have_messages get_messages>>;
}
That should do what you want.
--
Aaron Sherman <[EMAIL PROTECTED]>
Senior Systems Engineer and Toolsmith
"It's the sound of a satellite saying, 'get me down!'" -Shriekback