NAME

Bolts::Util - Utilities helpful for use with Bolts

VERSION

version 0.143170

SYNOPSIS

use Bolts::Util qw( bolts_init locator_for meta_locator_for );

my $loc   = locator_for($bag);
my $thing = $loc->acquire('path', 'to', 'thing');

my $metaloc = meta_locator_for($bag);
my $blueprint = $metaloc->acquire('blueprint', 'factory', {
    class  => 'MyApp::Thing',
    method => 'fetch',
});

# See Bolts::Role::Initializer for a better synopsis
my $obj = MyApp::Thing->new(
    foo => bolts_init('path', 'to', 'foo'),
);

DESCRIPTION

This provides some helpful utility methods for use with Bolts.

EXPORTED FUNCTIONS

artifact

my $artifact = artifact($bag, $name, %definition);

# For example:
my $artifact = artifact($bag, thing => ( class => 'MyApp::Thing' ) );

This contains the internal implementation for building Bolt::Artifact objects used by the sugar methods in Bolts and Bolts::Role. See the documentation there for more details on how to call it.

The $bag must be the metaclass or reference to which the artifact is being attached. The $name is the name to give the artifact and teh %definition is the remaineder of the definition.

locator_for

my $loc = locator_for($bag);

Given a bag, it will return a Bolts::Role::Locator for acquiring artifacts from it. If the bag provides it's own locator, the bag will be returned. If it doesn't (e.g., if it's a hash or an array or just some other object that doesn't have a locator built-in), then a new locator will be built to locate within the bag and returned on the first call. Subsequent calls using the same reference will return the same locator object.

meta_locator_for

my $metaloc = meta_locator_for($bag);

Attempts to find the meta locator for the bag. It returns a Bolts::Role::Locator that is able to return artifacts used to manage a collection of bolts bags and artifacts. If the bag itself does not have such a locator associated with it, one is constructed using the "$Bolts::GLOBAL_FALLBACK_META_LOCATOR" in Bolts class, which is Bolts::Meta::Locator by default. After the first call, the object created the first time for each reference will be reused.

bolts_init

my $init = bolts_init(@path, \%params);

This is shorthand for:

my $init = Bolts::Meta::Initializer->new(@path, \%params);

This returns an initializer object that may be used with Bolts::Role::Initializer to automatically initialize attributes from a built-in locator.

AUTHOR

Andrew Sterling Hanenkamp <hanenkamp@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Qubling Software LLC.

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