NAME

MooseX::FunkyAttributes::Role::Attribute::InsideOut - an inside-out attribute

SYNOPSIS

package Person;

use Moose;
use MooseX::FunkyAttributes;

has name => (
   traits => [ InsideOutAttribute ],
   is     => 'ro',
   isa    => 'Str',
);

has age => (
   is     => 'ro',
   isa    => 'Num',
);

package main;

use feature 'say';

my $bob = Person->new(name => 'Bob', age => 32);
say $bob->name;   # Bob
say $bob->dump;   # $VAR1 = bless({ age => 32 }, 'Person');

DESCRIPTION

This trait implements the "inside-out" technique for Moose attributes. Unlike MooseX::InsideOut it doesn't make all attributes in the class inside-out; just the attribute(s) it is applied to.

One situation where you might want to do this is to hide certain attributes from dumps. For example, a "password" attribute that you don't want to appear in log files, or an attribute which contains a large chunk of textual data or a deeply nested data structure which makes the logs less readable.

This trait inherits from MooseX::FunkyAttributes::Role::Attribute, but forget about most of what you read in the documentaton for that trait. Those custom_set, custom_get, custom_inline_set, etc options are all automatically generated for you.

BUGS

Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=MooseX-FunkyAttributes.

SEE ALSO

MooseX::FunkyAttributes, MooseX::InsideOut, Hash::FieldHash.

AUTHOR

Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE

This software is copyright (c) 2012-2014 by Toby Inkster.

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

DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.