summary refs log tree commit diff
path: root/lib/MooseX/Privacy.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MooseX/Privacy.pm')
-rw-r--r--lib/MooseX/Privacy.pm39
1 files changed, 36 insertions, 3 deletions
diff --git a/lib/MooseX/Privacy.pm b/lib/MooseX/Privacy.pm
index aba8c14..4794a14 100644
--- a/lib/MooseX/Privacy.pm
+++ b/lib/MooseX/Privacy.pm
@@ -1,20 +1,53 @@
 package MooseX::Privacy;
 
-use strict;
-use warnings;
 our $VERSION = '0.01';
 
+use Moose::Exporter;
+
+Moose::Exporter->setup_import_methods(
+    with_caller => [qw( private protected )], );
+
+sub private {
+    my ( $caller, $name, $body ) = @_;
+    $caller->meta->add_private_method( $name, $body );
+}
+
+sub protected {
+    my ( $caller, $name, $body ) = @_;
+    $caller->meta->add_protected_method( $name, $body );
+}
+
+sub init_meta {
+    my ( $me, %options ) = @_;
+
+    my $for = $options{for_class};
+    Moose->init_meta(%options);
+
+    Moose::Util::MetaRole::apply_metaclass_roles(
+        for_class       => $for,
+        metaclass_roles => [ 'MooseX::Privacy::Meta::Class', ],
+    );
+}
+
 1;
 __END__
 
 =head1 NAME
 
-MooseX::Privacy -
+MooseX::Privacy - Provides syntax to enable privacy on your methods
 
 =head1 SYNOPSIS
 
   use MooseX::Privacy;
 
+  private foo => sub {
+    return 23;
+  };
+
+  protect bar => sub {
+    return 42;
+  };
+
 =head1 DESCRIPTION
 
 MooseX::Privacy is