"method" keyword
Shawn M Moore [Sun, 9 Nov 2008 06:27:25 +0000 (06:27 +0000)]
lib/MooseX/Role/Parameterized.pm

index d024424..cd9d732 100644 (file)
@@ -9,7 +9,8 @@ use MooseX::Role::Parameterized::Meta::Role::Parameterizable;
 our $CURRENT_METACLASS;
 
 __PACKAGE__->setup_import_methods(
-    with_caller => ['parameter', 'role', 'has'],
+    with_caller => ['parameter', 'role', 'method'],
+    as_is       => ['has'],
 );
 
 sub parameter {
@@ -53,9 +54,7 @@ sub has {
     confess "has must be called within the role { ... } block."
         unless $CURRENT_METACLASS;
 
-    my $caller = shift;
-    my $names  = shift;
-
+    my $names = shift;
     $names = [$names] if !ref($names);
 
     for my $name (@$names) {
@@ -63,5 +62,22 @@ sub has {
     }
 }
 
+sub method {
+    confess "method must be called within the role { ... } block."
+        unless $CURRENT_METACLASS;
+
+    my $caller = shift;
+    my $name   = shift;
+    my $body   = shift;
+
+    my $method = Moose::Meta::Method->wrap(
+        package_name => $caller,
+        name         => $name,
+        body         => $body,
+    );
+
+    $CURRENT_METACLASS->add_method($name => $method);
+}
+
 1;