MooseX-Scaffold
view release on metacpan or search on metacpan
lib/MooseX/Scaffold.pm view on Meta::CPAN
else {
my $meta = Moose::Meta::Class->create($class_package);
unless ($no_class_attribute) {
MooseX::ClassAttribute->init_meta( for_class => $class_package );
}
}
}
my $scaffolding_package;
if (ref $scaffolder eq 'CODE') {
}
else {
$scaffolding_package = $scaffolder;
$self->_load_scaffolding_package( $scaffolding_package );
$scaffolder = $scaffolding_package->can('SCAFFOLD');
croak "Unable to find method SCAFFOLD in package $scaffolding_package" unless $scaffolder;
}
$self->_scaffold( $class_package, $scaffolder, @$arguments, scaffolding_package => $scaffolding_package );
}
sub _load_scaffolding_package {
my $self = shift;
my $scaffolding_package = shift;
return if Class::Inspector->loaded($scaffolding_package);
eval "require $scaffolding_package;" or croak "Unable to load scaffolding class $scaffolding_package since: $@";
}
sub _scaffold {
my $self = shift;
my $class_package = shift;
my $scaffolder = shift;
my $class = MooseX::Scaffold::Class->new($class_package);
$scaffolder->($class, @_, class_package => $class_package);
}
sub parent_package {
my $self = shift;
my $package = shift;
return $self->repackage($package, undef, shift);
}
sub child_package {
my $self = shift;
my $package = shift;
return $self->repackage($package, shift);
}
sub repackage {
my $self = shift;
my $package = shift;
my $replacement = shift;
my $count = shift;
$count = 0 unless defined $count && length $count;
return $package unless $count >= 1;
my @package = split m/::/, $package;
pop @package while $count--;
push @package, $replacement if defined $replacement && length $replacement;
return join '::', @package;
}
=head1 AUTHOR
Robert Krimen, C<< <rkrimen at cpan.org> >>
=head1 SOURCE
You can contribute or fork this project via GitHub:
L<http://github.com/robertkrimen/moosex-scaffold/tree/master>
git clone git://github.com/robertkrimen/moosex-scaffold.git MooseX-Scaffold
=head1 BUGS
Please report any bugs or feature requests to C<bug-moosex-classscaffold at rt.cpan.org>, or through
the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-Scaffold>. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc MooseX::Scaffold
You can also look for information at:
=over 4
=item * RT: CPAN's request tracker
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-Scaffold>
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/MooseX-Scaffold>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/MooseX-Scaffold>
=item * Search CPAN
L<http://search.cpan.org/dist/MooseX-Scaffold>
=back
=head1 ACKNOWLEDGEMENTS
=head1 COPYRIGHT & LICENSE
( run in 1.216 second using v1.01-cache-2.11-cpan-71847e10f99 )