On Tue, Apr 13, 2010 at 01:05:48PM -0400, Sir Robert Burbridge wrote:
> Hey,
>
> I've read through the MooseX::Types docs many times, but I can't quite  
> seem to get this to work.  I've never worked with MooseX::Types before.   
> Could someone show me what I'm missing?
>
> I'm trying to extend MooseX::Types::Set::Object to add two methods  
> (search and find) to allow getting subsets (or objects) based on search  
> criteria.  Here's what I have so far, and it doesn't work.  I don't  
> really have any broken code to put in here in place of the "???"  
> (because broken implies something even close to working).  I tried a  
> bunch of stuff with "extends", "duck_type", "coerce", and "subtype",  
> before realizing I was just sort of flailing around =)  I *think* I'm  
> supposed to be using some kind of role (to apply methods only?) but I  
> don't understand the manual or cookbook at all in this area.
>
> The desired functionality:
> - define a set of objects as a moose object property.
> - use my $results = $obj->set->search(...criteria...) to find a proper  
> subset.
> - use my $obj = $obj->set->find(...criteria...) to find the first  
> matching object (or undef)
>
> If I get it working, I'm happy to submit a doc patch =)
>
> Thanks,
>
> -Sir

You're confusing classes and types. You want to do something like this:

  package My::Set::Object;
  use Moose;
  extends 'Set::Object';
  sub search { ... }
  sub find { ... }

  package My::Types;
  use MooseX::Types -declare => ['MySetObject'];
  class_type MySetObject, { class => 'My::Set::Object' };

Basically, the functionality needs to go in an actual subclass of
Set::Object, and then you need to create a type for that subclass.

-doy

Reply via email to