summaryrefslogtreecommitdiffstats
path: root/static/talks/extending_moose_yapc_na_2010/055.pl.html
diff options
context:
space:
mode:
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.html58
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-&gt;setup_import_methods(
+ with_meta =&gt; ['command'],
+ class_metaroles =&gt; {
+ class =&gt; ['Command::Role::Class'],
+ },
+ );
+
+ sub _command_method_meta {
+ my ($meta) = @_;
+ Moose::Meta::Class-&gt;create_anon_class(
+ superclasses =&gt; [$meta-&gt;method_metaclass],
+ roles =&gt; ['Command::Role::Method'],
+ cache =&gt; 1,
+ )-&gt;name;
+ }
+
+ sub command {
+ my ($meta, $name, $code) = @_;
+ $meta-&gt;add_method(
+ $name =&gt; _command_method_meta($meta)-&gt;wrap(
+ $code,
+ name =&gt; $name,
+ package_name =&gt; $meta-&gt;name,
+ associated_metaclass =&gt; $meta
+ ),
+ );
+ }
+</pre>
+</body>