diff options
Diffstat (limited to 'lib/MooseX/Bread/Board/Meta/Role/Class.pm')
-rw-r--r-- | lib/MooseX/Bread/Board/Meta/Role/Class.pm | 17 |
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; |