summaryrefslogtreecommitdiffstats
path: root/lib/MooseX/Extension.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MooseX/Extension.pm')
-rw-r--r--lib/MooseX/Extension.pm32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/MooseX/Extension.pm b/lib/MooseX/Extension.pm
new file mode 100644
index 0000000..ccfc54c
--- /dev/null
+++ b/lib/MooseX/Extension.pm
@@ -0,0 +1,32 @@
+package MooseX::Extension;
+use Moose ();
+use Moose::Exporter;
+use Moose::Util::MetaRole;
+
+my ($import, $unimport);
+
+sub import {
+ my $caller = caller;
+ ($import, $unimport) = Moose::Exporter->build_import_methods;
+ goto $import;
+}
+
+sub unimport {
+ goto $unimport;
+}
+
+
+sub init_meta {
+ shift;
+ my %options = @_;
+ Moose->init_meta(%options);
+ Moose::Util::MetaRole::apply_metaclass_roles(
+ for_class => $options{for_class},
+ );
+ Moose::Util::MetaRole::apply_base_class_roles(
+ for_class => $options{for_class},
+ );
+ return Class::MOP::class_of($options{for_class});
+}
+
+1;