summaryrefslogtreecommitdiffstats
path: root/lib/Bread/Board/Declare
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-01-26 17:28:16 -0600
committerJesse Luehrs <doy@tozt.net>2012-01-26 17:32:02 -0600
commitd4fc09d937d7afb2d08ab4badca26426d78944da (patch)
tree53a7ee8ea9a2fb115d0428c2e96cf16a8c01de30 /lib/Bread/Board/Declare
parent86476983d21b7830a4f974f277e91b748542669a (diff)
downloadbread-board-declare-d4fc09d937d7afb2d08ab4badca26426d78944da.tar.gz
bread-board-declare-d4fc09d937d7afb2d08ab4badca26426d78944da.zip
document the container trait
Diffstat (limited to 'lib/Bread/Board/Declare')
-rw-r--r--lib/Bread/Board/Declare/Meta/Role/Attribute/Container.pm39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/Bread/Board/Declare/Meta/Role/Attribute/Container.pm b/lib/Bread/Board/Declare/Meta/Role/Attribute/Container.pm
index 6fa68ad..1b5ab6d 100644
--- a/lib/Bread/Board/Declare/Meta/Role/Attribute/Container.pm
+++ b/lib/Bread/Board/Declare/Meta/Role/Attribute/Container.pm
@@ -1,9 +1,48 @@
package Bread::Board::Declare::Meta::Role::Attribute::Container;
use Moose::Role;
Moose::Util::meta_attribute_alias('Container');
+# ABSTRACT: attribute metarole for container attributes in Bread::Board::Declare
use Class::Load 'load_class';
+=head1 DESCRIPTION
+
+This attribute trait indicates that the attribute (in a
+L<Bread::Board::Declare> class) contains a subcontainer rather than a service.
+It must be specified explicitly (or else a service that happens to return a
+container will be created):
+
+ has attr => (
+ traits => ['Container'],
+ is => 'ro',
+ isa => 'Bread::Board::Container',
+ );
+
+Container attributes (unlike service attributes) can have defaults and
+builders, allowing you to also define subcontainers inline when desired, as in:
+
+ has attr => (
+ traits => ['Container'],
+ is => 'ro',
+ isa => 'Bread::Board::Container',
+ default => sub {
+ container Foo => as {
+ service Bar => 'BAR';
+ };
+ }
+ );
+
+=cut
+
+=attr dependencies
+
+If no default or builder is supplied, the type constraint will be used to
+create a container instance automatically (using a temporary
+L<ConstructorInjection|Bread::Board::ConstructorInjection> service). This is
+the dependency specification to use for that temporary service.
+
+=cut
+
has dependencies => (
is => 'ro',
isa => 'Bread::Board::Service::Dependencies',