--- trunk/lib/Frey/ClassLoader.pm 2008/11/17 19:21:06 382 +++ trunk/lib/Frey/ClassLoader.pm 2008/11/18 13:52:26 409 @@ -57,7 +57,7 @@ $path .= '.pm'; $path = $INC{$path}; warn "# $class from INC $path"; - $class_path->{$class} = $path; + $class_path->{$class} = $path || confess "can't find path for $class"; } return $class_path->{$class}; } @@ -124,4 +124,35 @@ $loaded_class; } +=head2 class_methods + + my @all_methods = $o->class_methods( $class ); + + my $class_method = $o->class_methods( $class ); + if ( $class_method->{ $method } ) { + # $class has $method + } + +=cut + +sub class_methods { + my ( $self, $class ) = @_; + + confess "need class" unless $class; + if ( ! $class->can('meta') ) { + warn "$class doesn't have meta (isn't Moose class)"; + return; + } + my $meta = $class->meta; + + my $attr; + my $methods; + $attr->{$_}++ foreach $meta->get_attribute_list; + my @methods = map { $methods->{$_}++; $_ } grep { ! defined($attr->{$_}) && $_ ne 'meta' } $meta->get_method_list; + warn "# methods = ",dump( @methods ) if $self->debug; + + return @methods if wantarray; + return $methods; +} + 1;