diff options
Diffstat (limited to 'static/talks/extending_moose_yapc_na_2010/055.pl.html')
-rw-r--r-- | static/talks/extending_moose_yapc_na_2010/055.pl.html | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/static/talks/extending_moose_yapc_na_2010/055.pl.html b/static/talks/extending_moose_yapc_na_2010/055.pl.html new file mode 100644 index 0000000..84c098a --- /dev/null +++ b/static/talks/extending_moose_yapc_na_2010/055.pl.html @@ -0,0 +1,58 @@ +<html> +<head> +<title>055.pl</title> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<script> +function navigate(e) { + var keynum = (window.event) // IE + ? e.keyCode + : e.which; + if (keynum == 8) { + window.location = "054.pl" + ".html"; + return false; + } + if (keynum == 13 || keynum == 32) { + window.location = "056.pl" + ".html"; + return false; + } + if (keynum == 73 || keynum == 105) { + window.location = "index.html"; + return false; + } + return true; +} +</script> +</head> +<body onkeypress="return navigate(event)"> +<pre> package Command; + use Moose::Exporter; + + Moose::Exporter->setup_import_methods( + with_meta => ['command'], + 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; + } + + sub command { + my ($meta, $name, $code) = @_; + $meta->add_method( + $name => _command_method_meta($meta)->wrap( + $code, + name => $name, + package_name => $meta->name, + associated_metaclass => $meta + ), + ); + } +</pre> +</body> |