calculate_all_roles method
Yuval Kogman [Wed, 5 Jul 2006 00:12:34 +0000 (00:12 +0000)]
lib/Moose/Meta/Class.pm
lib/Moose/Meta/Role.pm

index 3fcb6d2..14073d9 100644 (file)
@@ -34,6 +34,12 @@ sub add_role {
     push @{$self->roles} => $role;
 }
 
+sub calculate_all_roles {
+    my $self = shift;
+    my %seen;
+    grep { !$seen{$_->name}++ } map { $_->calculate_all_roles } @{ $self->roles };
+}
+
 sub does_role {
     my ($self, $role_name) = @_;
     (defined $role_name)
index 9c87164..bea6656 100644 (file)
@@ -95,6 +95,12 @@ sub add_role {
     push @{$self->get_roles} => $role;
 }
 
+sub calculate_all_roles {
+    my $self = shift;
+    my %seen;
+    grep { !$seen{$_->name}++ } $self, map { $_->calculate_all_roles } @{ $self->get_roles };
+}
+
 sub does_role {
     my ($self, $role_name) = @_;
     (defined $role_name)
@@ -706,4 +712,4 @@ L<http://www.iinteractive.com>
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself. 
 
-=cut
\ No newline at end of file
+=cut