NAME
   MooseX::Privacy - Provides the syntax to restrict/control visibility of
   your methods

VERSION
   version 0.02

SYNOPSIS
       use MooseX::Privacy;

       has config => (
           is     => 'rw',
           isa    => 'Some::Config',
           traits => [qw/Private/],
       );

       has username => (
           is     => 'rw',
           isa    => 'Str',
           traits => [qw/Protected/],
       );

       private_method foo => sub {
           return 23;
       };

       protected_method bar => sub {
           return 42;
       };

DESCRIPTION
   MooseX::Privacy brings the concept of private and protected methods to
   your class.

METHODS
 Private
   When you declare a method as private, this method can be called only
   within the class.

       package Foo;

       use Moose;
       use MooseX::Privacy;

       private_method foo => sub { return 23 };

       sub mul_by_foo { my $self = shift; $self->foo * $_[0] }

       1;

       my $foo = Foo->new;
       $foo->foo;           # die
       $foo->mul_by_foo;    # ok

 Protected
   When you declare a method as protected, this method can be called only
   within the class AND any of it's subclasses.

       package Foo;

       use Moose;
       use MooseX::Privacy;

       protected_method foo => sub { return 23 };

       package Bar;

       use Moose;
       extends Foo;

       sub bar { my $self = shift; $self->foo }

       1;

       my $foo = Foo->new;
       $foo->foo;    # die
       my $bar = Bar->new;
       $bar->bar;    # ok

 Attributes
  Private
   When the Private traits is applied to an attribute, this attribute can
   only be read or set within the class.

  Protected
   When the Protected traits is applied to an attribute, this attribute can
   only be read or set within the class AND any of his subclasses.

AUTHOR
     franck cuny <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2010 by franck cuny.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.