summaryrefslogtreecommitdiffstats
path: root/lib/MooseX/Bread/Board/Meta/Role/Class.pm
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-02-21 11:40:59 -0600
committerJesse Luehrs <doy@tozt.net>2011-02-21 11:40:59 -0600
commited3e3a9675ceb2745488ab80b27796a77eca4761 (patch)
tree64e1f6ac5c42c8a8ba3d170ab6730fba6d59aa2a /lib/MooseX/Bread/Board/Meta/Role/Class.pm
parent231745b0fd56e122e09165e1d8ffd57ae86ae749 (diff)
downloadbread-board-declare-ed3e3a9675ceb2745488ab80b27796a77eca4761.tar.gz
bread-board-declare-ed3e3a9675ceb2745488ab80b27796a77eca4761.zip
make inheritance work
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;