Provided by: libmoosex-traits-pluggable-perl_0.12-1_all bug

NAME

       MooseX::Traits::Pluggable - trait loading and resolution for Moose

DESCRIPTION

       See MooseX::Traits for usage information.

       Use "new_with_traits" to construct an object with a list of traits and "apply_traits" to
       apply traits to an instance.

       Adds support for class precedence search for traits and some extra attributes, described
       below.

TRAIT SEARCH

       If the value of "_trait_namespace" in MooseX::Traits starts with a "+" the namespace will
       be considered relative to the "class_precedence_list" (ie.  @ISA) of the original class.

       Example:

         package Class1
         use Moose;

         package Class1::Trait::Foo;
         use Moose::Role;
         has 'bar' => (
             is       => 'ro',
             isa      => 'Str',
             required => 1,
         );

         package Class2;
         use parent 'Class1';
         with 'MooseX::Traits';
         has '+_trait_namespace' => (default => '+Trait');
         has '+_traits_behave_like_roles' => (default => 1);

         package Class2::Trait::Bar;
         use Moose::Role;
         has 'baz' => (
             is       => 'ro',
             isa      => 'Str',
             required => 1,
         );

         package main;
         my $instance = Class2->new_with_traits(
             traits => ['Foo', 'Bar'],
             bar => 'baz',
             baz => 'quux',
         );

         $instance->does('Class1::Trait::Foo'); # true
         $instance->does('Class2::Trait::Bar'); # true

NAMESPACE ARRAYS

       You can search multiple namespaces for traits, for example:

         has '+_trait_namespace' => (
             default => sub { [qw/+Trait +Role ExtraNS::Trait/] }
         );

       Will search in the "class_precedence_list" for "::Trait::TheTrait" and "::Role::TheTrait"
       and then for "ExtraNS::Trait::TheTrait".

CORRECT ROLE BEHAVIOR

       By default, a method from a role will override a class method, this however is not the
       behavior one expects when applying a Moose role using the normal methods.

       If you want the behavior to be consistent with Moose roles, then use this configuration
       attribute in your class:

         has '+_traits_behave_like_roles' => (default => 1);

       This may or may not become the default in the future, for now you have to ask for it for
       backward compatibility reasons.

EXTRA ATTRIBUTES

   _original_class_name
       When traits are applied to your class or instance, you get an anonymous class back whose
       name will be not the same as your original class. So "ref $self" will not be "Class", but
       "$self->_original_class_name" will be.

   _traits
       List of the (unresolved) traits applied to the instance.

   _resolved_traits
       List of traits applied to the instance resolved to full package names.

SEE ALSO

       MooseX::Traits, MooseX::Object::Pluggable, CatalystX::Component::Traits

BUGS

       Please report any bugs or feature requests to "bug-moosex-traits-pluggable at
       rt.cpan.org", or through the web interface at
       <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-Traits-Pluggable>.  I will be
       notified, and then you'll automatically be notified of progress on your bug as I make
       changes.

AUTHOR

       Rafael Kitover "<rkitover@cpan.org>"

CONTRIBUTORS

       Tomas Doran, "<bobtfish@bobtfish.net>" Fitz Elliott, "<fitz.elliott@gmail.com>" Andreas
       Marienborg, "<andreas.marienborg@gmail.com>" Alexander Hartmaier, "<abraxxa@cpan.org>"

COPYRIGHT & LICENSE

       Copyright (c) 2014 by the aforementioned "AUTHOR" and "CONTRIBUTORS".

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