diff options
-rw-r--r-- | lib/MooseX/Privacy.pm | 39 |
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 |