Bread::Board::Types(3pm)

Bread::Board::Types3pm

Types and coercions for bread::board

Version

version 0.37

Overview

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

Types

"Bread::Board::Container::SubContainerList"

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

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 Bread::Board::Service.

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 Bread::Board::Dependency.

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 MooseX::Params::Validate specifications.

Can be coerced from an arrayref of strings:

  [qw(a b c)]

becomes:

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

Releases

6 releases since Debian 8 (Jessie); the text changed 3 times.

  1. 8–9
  2. 10
  3. 11
  4. 12–13

Author

Stevan Little <[email protected]>

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.

From libbread-board-perl 0.37-2 in Debian 13 (Trixie). Parsed by carta from the page's man source.