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.