summaryrefslogtreecommitdiffstats
path: root/lib/MooseX/Bread/Board/Meta/Role/Class.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MooseX/Bread/Board/Meta/Role/Class.pm')
-rw-r--r--lib/MooseX/Bread/Board/Meta/Role/Class.pm17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/MooseX/Bread/Board/Meta/Role/Class.pm b/lib/MooseX/Bread/Board/Meta/Role/Class.pm
index 652d0b7..9cabd88 100644
--- a/lib/MooseX/Bread/Board/Meta/Role/Class.pm
+++ b/lib/MooseX/Bread/Board/Meta/Role/Class.pm
@@ -2,6 +2,7 @@ package MooseX::Bread::Board::Meta::Role::Class;
use Moose::Role;
use Bread::Board::Service;
+use List::MoreUtils qw(any);
has services => (
traits => ['Array'],
@@ -14,6 +15,22 @@ has services => (
},
);
+sub has_any_services {
+ my $self = shift;
+ return any { $_->has_services }
+ grep { Moose::Util::does_role($_, __PACKAGE__) }
+ map { $_->meta }
+ $self->linearized_isa;
+}
+
+sub get_all_services {
+ my $self = shift;
+ return map { $_->services }
+ grep { Moose::Util::does_role($_, __PACKAGE__) }
+ map { $_->meta }
+ $self->linearized_isa;
+}
+
no Moose::Role;
1;