b>cb>
####
my @nodes = (
bless( {
'data' => 'c',
'tag' => bless( {
'data' => 'b',
'tag' => 'a'
}, 'Node' )
}, 'Node' )
);
####
package Node;
use Moose;
has [ qw ]
=> ( is => 'rw', isa => 'Any' );
sub as_text {
my ($self) = shift;
my $tag = $self->tag;
my $tag_processing_method = ref $tag ? $tag->as_text : $tag;
return $self->$tag_processing_method( $self->data );
}
# Tag Processing Methods here:
sub a { "super_$_[1]" } # prepend "super_"
sub b { "b_$_[1]" } # prepend "b_"
sub super_b { "B_$_[1]" } # prepend "B_"
####
use overload
q{""} => 'as_text',
fallback => 1,
;
####
sub as_text {
my ($self) = shift;
my $processing_method = $self->tag;
return $self->$processing_method( $self->data );
}