moosex::compiletime::traits(3pm) [debian man page]
MooseX::CompileTime::Traits(3pm) User Contributed Perl Documentation MooseX::CompileTime::Traits(3pm)NAME
MooseX::CompileTime::Traits - Allow compile time traits for classes/roles
VERSION
version 1.102570
SYNOPSIS
role Bar(Int :$bar) { method bar { $bar + 2 } }
role Baz(Int :$baz) { method baz { $baz + 4 } }
class Foo with MooseX::CompileTime::Traits { }
class Flarg with MooseX::CompileTime::Traits { }
...
use Foo traits => [ Bar => { bar => 2 } ];
use Flarg traits => [ Bar => { bar => 1 }, Baz => { baz => 1} ];
Foo->new()->bar(); # 4
my $flarg = Flarg->new();
$flarg->bar(); # 3
$flarg->baz(); # 5
DESCRIPTION
MooseX::CompileTime::Traits allows role application at compile time via use statements. What this class does is provide an import method
that will apply each of the roles (along with any arguments for parameterized roles).
Roles and their arguments should be provided as an ArrayRef of tuples.
Simply 'with' the role to gain the functionality
PUBLIC_METHODS
import
(ClassName $class: ArrayRef :$traits?)
import is provided such that when your class or role is use'd it can take additional arguments that will be validatated and interpreted as
roles or traits that need to be applied.
AUTHOR
Nicholas Perez <nperez@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Infinity Interactive.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
perl v5.10.1 2010-09-14 MooseX::CompileTime::Traits(3pm)
Check Out this Related Man Page
MooseX::Traits::Pluggable(3pm) User Contributed Perl Documentation MooseX::Traits::Pluggable(3pm)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');
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".
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
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.
SUPPORT
More information at:
o RT: CPAN's request tracker
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-Traits-Pluggable>
o AnnoCPAN: Annotated CPAN documentation
<http://annocpan.org/dist/MooseX-Traits-Pluggable>
o CPAN Ratings
<http://cpanratings.perl.org/d/MooseX-Traits-Pluggable>
o Search CPAN
<http://search.cpan.org/dist/MooseX-Traits-Pluggable/>
AUTHOR
Rafael Kitover "<rkitover@cpan.org>"
CONTRIBUTORS
Tomas Doran, "<bobtfish@bobtfish.net>"
COPYRIGHT & LICENSE
Copyright (c) 2009 - 2010 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.
perl v5.10.1 2010-07-25 MooseX::Traits::Pluggable(3pm)