C:\Perl_PPM\Bread-Board-0.33\blib/lib/Bread/Board/Types.pm



NAME

Bread::Board::Types


VERSION

version 0.33


DESCRIPTION

This package defines types and coercions for the Bread::Board manpage.


TYPES

Bread::Board::Container::SubContainerList

A hashref mapping strings to instances of the Bread::Board::Container manpage or the Bread::Board::Container::Parameterized manpage.

Can be coerced from an arrayref of containers: the keys will be the containers' names.

Bread::Board::Container::ServiceList

A hashref mapping strings to instances of the Bread::Board::Service manpage.

Can be coerced from an arrayref of services: the keys will be the services' names.

Bread::Board::Service::Dependencies

Hashref mapping strings to instances of the Bread::Board::Dependency manpage.

The values of the hashref can be coerced in several different ways:

a string
will be interpreted as the service_path

a hashref with a single key
the key will be interpreted as a < service_path>, and the value as a hashref for < service_params>

an arrayref
each element will be interpreted as a dependency (possibly through all the coercions listed here); see below for an example

a service object
will be interpreted as a dependency on that service

a dependency object
will be taken as-is

Instead of a hashref of any of the above things, you can use an arrayref: it will be coerced to hashref, using the (coerced) dependencies' names as keys.

Examples

   service foo => (
     class => 'Foo',
     dependencies => {
       { bar => { attribute => 12 } },
     },
   );

The service foo depends on the parameterized service bar, and bar will be instantiated passing the hashref { attribute => 12 } to its get method.

   service foo => (
     class => 'Foo',
     dependencies => {
       things => [ 'bar', 'baz' ],
     },
   );

The service foo depends on the services bar and baz, and when instantiating foo, its constructor will receive something like < things = [ $instance_of_bar, $instance_of_baz ] >>.

   service foo => (
     class => 'Foo',
     dependencies => {
       things => [
         { bar => { attribute => 12 } },
         { bar => { attribute => 27 } },
       ],
     },
   );

You can mix&match the coercions! This foo will get two different instances of bar in its things attribute, each bar instantiated with a different value.

Bread::Board::Service::Parameters

Hashref mapping strings to the MooseX::Params::Validate manpage specifications.

Can be coerced from an arrayref of strings:

  [qw(a b c)]

becomes:

  {
    a => { optional => 0 },
    b => { optional => 0 },
    c => { optional => 0 },
  }


AUTHOR

Stevan Little <stevan@iinteractive.com>


BUGS

Please report any bugs or feature requests on the bugtracker website https://github.com/stevan/BreadBoard/issues

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.


COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Infinity Interactive.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

 C:\Perl_PPM\Bread-Board-0.33\blib/lib/Bread/Board/Types.pm