--- trunk/lib/Frey/ClassLoader.pm 2008/11/18 12:55:32 408 +++ trunk/lib/Frey/ClassLoader.pm 2008/11/18 14:42:58 416 @@ -88,22 +88,20 @@ if ( ! $class->can('meta') ) { my $instance = Moose::Meta::Class->create_anon_class; - warn "class $class isn't Moose, faking anon class"; + warn "class $class isn't Moose, faking anon class" if $self->debug; return ( $instance, 0 ); } - my $meta; + my $meta = $class->meta; my $is_role = 0; - my $instance; if($class->meta->isa('Moose::Meta::Role')){ $is_role = 1; - $instance = Moose::Meta::Class->create_anon_class; + my $instance = Moose::Meta::Class->create_anon_class; + warn "# apply $class on $instance"; $class->meta->apply( $instance ); - $meta = $class->meta; die $@ if $@; - } else { - $meta = $class->meta; + $meta = $instance->meta; } return ( $meta, $is_role ); } @@ -126,7 +124,12 @@ =head2 class_methods - my @methods = $o->class_methods( $class ); + my @all_methods = $o->class_methods( $class ); + + my $class_method = $o->class_methods( $class ); + if ( $class_method->{ $method } ) { + # $class has $method + } =cut @@ -135,18 +138,19 @@ confess "need class" unless $class; if ( ! $class->can('meta') ) { - warn "$class doesn't have meta (isn't Moose class)"; + warn "$class doesn't have meta (isn't Moose class)" if $self->debug; return; } my $meta = $class->meta; my $attr; + my $methods; $attr->{$_}++ foreach $meta->get_attribute_list; - my @methods = grep { ! defined($attr->{$_}) } $meta->get_method_list; + my @methods = map { $methods->{$_}++; $_ } grep { ! defined($attr->{$_}) && $_ ne 'meta' } $meta->get_method_list; warn "# methods = ",dump( @methods ) if $self->debug; - return @methods; + return @methods if wantarray; + return $methods; } - 1;