summaryrefslogtreecommitdiffstats
path: root/t/lib/Command.pm
diff options
context:
space:
mode:
Diffstat (limited to 't/lib/Command.pm')
-rw-r--r--t/lib/Command.pm31
1 files changed, 31 insertions, 0 deletions
diff --git a/t/lib/Command.pm b/t/lib/Command.pm
new file mode 100644
index 0000000..b39b8b5
--- /dev/null
+++ b/t/lib/Command.pm
@@ -0,0 +1,31 @@
+package Command;
+use MooseX::Exporter::Easy;
+
+class_metaroles {
+ class => ['Command::Role::Class'],
+};
+
+sub _command_method_meta {
+ my ($meta) = @_;
+ Moose::Meta::Class->create_anon_class(
+ superclasses => [$meta->method_metaclass],
+ roles => ['Command::Role::Method'],
+ cache => 1,
+ )->name;
+}
+
+with_meta command => sub {
+ my ($meta, $name, $code) = @_;
+ $meta->add_method(
+ $name => _command_method_meta($meta)->wrap(
+ $code,
+ name => $name,
+ package_name => $meta->name,
+ associated_metaclass => $meta
+ ),
+ );
+};
+
+export;
+
+1;