NAME
MooseX::ShortCut::BuildInstance - A shortcut to build Moose instances
SYNOPSIS
#!perl
use Modern::Perl;
package Mineral;
use Moose;
has 'type' =>( is => 'ro' );
package Identity;
use Moose::Role;
has 'name' =>( is => 'ro' );
use MooseX::ShortCut::BuildInstance qw( build_instance );
use Test::More;
use Test::Moose;
my $paco = build_instance(
package => 'Pet::Rock',
superclasses =>['Mineral'],
roles =>['Identity'],
type => 'Quartz',
name => 'Paco',
);
does_ok( $paco, 'Identity', 'Check that the ' . $paco->meta->name .
' has an -Identity-' );
say 'My ' . $paco->meta->name . ' made from -' . $paco->type . '- (a ' .
( join ', ', $paco->meta->superclasses ) . ') is called -' .
$paco->name . '-';
done_testing();
##############################################################################
# Output of SYNOPSIS
# 01:ok 1 - Check that the Pet::Rock has an -Identity-
# 02:My Pet::Rock made from -Quartz- (a Mineral) is called -Paco-
# 03:1..1
##############################################################################
DESCRIPTION
This module is a shortcut to build Moose instances on the fly.
Methods
Methods for Export
build_instance( %args|\%args )
- Definition: This method is used to create a Moose instance on the fly. It assumes that you do not have the class pre-built and will look for the needed information to compose a new class as well. Basically this passes the %args intact to build_class and then runs $returned_class_name->new( %remaining_args );
- Accepts: a hash or hashref of arguments. They must include the necessary information to build a class. (if you already have a class just call $class->new(); instead of this method!) This hashref can also contain any attribute settings for the instance as well.
- Returns: This will return a blessed instance of your new class with the passed attributes set.
build_class( %args|\%args )
- Definition: This method is used to compose a Moose class on the fly. By itself it is redundant to the Moose::Meta::Class->class(%args) method. The use of this method is best when paired with build_instance. This function takes take the passed arguments and strips out three potential key value pairs. It then uses the Moose::Meta::Class module to build a new composed class. The one additional value here is that most key value pairs are optional! The caveat being that some functionality must be passed either through a role or a class. This function will handle any other missing key/value pairs not passed.
- Accepts: a hash or hashref of arguments. These keys are always used to build the class. They are never passed on to %remaining_args. The three key value pairs use are;
-
- package - This is the name (a string) that the new instance of a this class is blessed under. If this key is not provided the package will generate a generic name.
- superclasses - this is intentionally the same key from Moose::Meta::Class. It expects the same values. (Must be Moose classes)
- roles - this is intentionally the same key from Moose::Meta::Class. It expects the same values. (Must be Moose roles)
- Returns: This will check the caller and see if it wants an array or a scalar. In array context it returns the new class name and a hash ref of the unused hash key - value pairs. These are presumably the arguments for the instance. If the requested return is a scalar it just returns the name of the newly created class.
GLOBAL VARIABLES
- $ENV{Smart_Comments}
-
The module uses Smart::Comments if the '-ENV' option is set. The 'use' is encapsulated in a BEGIN block triggered by the environmental variable to comfort non-believers. Setting the variable $ENV{Smart_Comments} will load and turn on smart comment reporting. There are three levels of 'Smartness' available in this module '### #### #####'.
SUPPORT
TODO
Add a type package to manage the inputs to the exported methods
AUTHOR
COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
Dependencies
- version
- 5.010 - use of defined or
- Moose
- Moose::Meta::Class
- Moose::Exporter
- Carp
SEE ALSO
- Moose::Meta::Class ->create
- Moose::Util ->with_traits
- MooseX::ClassCompositor
- Smart::Comments - is used if the -ENV option is set