Created
April 26, 2012 09:27
-
-
Save melo/2498061 to your computer and use it in GitHub Desktop.
My Perl class builder
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package E6::Setup::Class; | |
use :5.14; | |
use warnings; | |
use utf8; | |
use Moose (); | |
use MooseX::HasDefaults::RO (); | |
use MooseX::StrictConstructor (); | |
use MooseX::AttributeShortcuts (); | |
use Try::Tiny (); | |
use Method::Signatures; | |
use Moose::Exporter; | |
use namespace::autoclean (); # no cleanup, just load | |
Moose::Exporter->setup_import_methods( | |
also => ['Moose', 'MooseX::AttributeShortcuts', 'MooseX::StrictConstructor'], | |
trait_aliases => [['MooseX::UndefTolerant::Attribute' => 'UndefTolerant']], | |
); | |
sub init_meta { | |
my $class = shift; | |
my %params = @_; | |
my $for_class = $params{for_class}; | |
warnings->import; | |
strict->import; | |
utf8->import; | |
feature->import(':5.14'); | |
Try::Tiny->export_to_level(2); | |
Moose->init_meta(@_); | |
## See https://rt.cpan.org/Public/Bug/Display.html?id=76793 why we | |
## should not use init_meta anymore | |
MooseX::HasDefaults::RO->import({ into => $for_class }); | |
# FIXME: https://github.com/schwern/method-signatures/issues/41 | |
# Method::Signatures->import({ into => $for_class }); | |
namespace::autoclean->import(-cleanee => $for_class); | |
} | |
1; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package E6::Setup::Class; | |
use :5.14; | |
use warnings; | |
use utf8; | |
use Moose (); | |
use MooseX::HasDefaults::RO (); | |
use MooseX::StrictConstructor (); | |
use MooseX::AttributeShortcuts (); | |
use Try::Tiny (); | |
use Method::Signatures; | |
use Moose::Exporter; | |
use namespace::autoclean (); # no cleanup, just load | |
Moose::Exporter->setup_import_methods( | |
also => ['Moose', 'MooseX::AttributeShortcuts', 'MooseX::StrictConstructor'], | |
trait_aliases => [['MooseX::UndefTolerant::Attribute' => 'UndefTolerant']], | |
); | |
sub init_meta { | |
my $class = shift; | |
my %params = @_; | |
my $for_class = $params{for_class}; | |
warnings->import; | |
strict->import; | |
utf8->import; | |
feature->import(':5.14'); | |
Try::Tiny->export_to_level(2); | |
Moose->init_meta(@_); | |
MooseX::HasDefaults::RO->init_meta(@_); | |
# FIXME: https://github.com/schwern/method-signatures/issues/41 | |
# Method::Signatures->import({ into => $for_class }); | |
namespace::autoclean->import(-cleanee => $for_class); | |
} | |
1; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment