I had a similar problem. I receive a minimal abstract object and changed it into a specialized one to make life easier. What I did was creating a new class "Labrador" with the superclass "Dog" and a role "LabradorMethodsAndAtributes". Well, in my case it wasn't dogs.
Shortened, adjusted, unrunable code:
my $class_name = "Felidae::Tiger"; # Does the class already exist? return $class_name if is_class_loaded($class_name); # No, create it my $superclass = "Felidae"; my $role_name = "Felidae::Role::Tiger"; # create the Role my $role = Moose::Meta::Role->create($role_name); # A leopard does not have stripes but spots $role->add_attribute( "stripecount", ( is => 'rw', isa => 'Int', ... # builder, lazy etc ) ); my $my_class = Moose::Meta::Class->create( $class_name, superclasses => [$superclass], roles => [$role_name], ); my $garfield = $class_name->new($felidae_obj);
Now you have an object which isa "Felidae" and a "Tiger" and does "stripecount".
And it came to pass that in time the Great God Om spake unto Brutha, the Chosen One: "Psst!"
(Terry Pratchett, Small Gods)
In reply to Re: changing moose object classes on the go
by Brutha
in thread changing moose object classes on the go
by tomgracey
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |