From 983f7f81b63f0435c221298683e7a0f3d987292d Mon Sep 17 00:00:00 2001 From: franck cuny Date: Wed, 10 Feb 2010 14:11:38 +0100 Subject: export private and protected --- lib/MooseX/Privacy.pm | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 'lib/MooseX') 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 -- cgit 1.4.1