Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MooX::Traits::Util(3) User Contributed Perl DocumentationMooX::Traits::Util(3)

NAME
       MooX::Traits::Util - non-role alternative to MooX::Traits

SYNOPSIS
       Given some roles:

	  package Role;
	  use Moo::Role;
	  has foo => ( is => 'ro', required => 1 );

       And a class:

	  package Class;
	  use Moo;

       Apply the roles to the class:

	  use MooX::Traits::Util -all;

	  my $class = new_class_with_traits('Class', 'Role');

       Then use	your customized	class:

	  my $object = $class->new( foo	=> 42 );
	  $object->isa('Class'); # true
	  $object->does('Role'); # true
	  $object->foo;	# 42

DESCRIPTION
       This module provides the	functionality of MooX::Traits, but it's	an
       exporter	rather than a role.

       It's inspired by, but not compatible with MooseX::Traits::Util. The
       latter module is	undocumented, and it's not entirely clear whether it's
       intended	to be consumed by end-users, or	is an entirely internal	API.

       This module exports nothing by default.

   Functions
       "new_class_with_traits( $class, @traits )"
	   Return a new	class name with	the traits applied.

	   This	function is not	quite compatible with the
	   "new_class_with_traits" function provided by	MooseX::Traits::Util,
	   in that the latter will return a metaclass object.

	   This	function can be	exported.

       "new_class_with_traits_one_by_one( $class, @traits )"
	   Rather than applying	the the	traits simultaneously, the traits are
	   applied one at a time. It is	roughly	equivalent to:

	      use List::Util qw(reduce);
	      use MooX::Traits::Util qw( new_class_with_traits );

	      my $class	 = ...;
	      my @traits = ...;
	      my $new	 = reduce { new_class_with_traits($a, $b) } $class, @traits;

	   Applying traits one by one has implications for method modifiers,
	   and for method conflict detection. Use with caution.

	   There is no equivalent functionality	in MooseX::Traits::Util.

	   This	function can be	exported.

       "resolve_traits(	$class,	@traits	)"
	   This	function returns a list	of traits, but does not	apply them to
	   the class. It honours the class' "_trait_namespace" method (but
	   only	if the class does the MooX::Traits role) and handles parameter
	   hashrefs for	parameterizable	roles. (That is, parameters are
	   applied to the role,	and the	list of	traits returned	by the
	   function includes the result	of that	application instead of
	   including the original hashref.)

	   This	function is not	quite compatible with the "resolve_traits"
	   function provided by	MooseX::Traits::Util, in that the latter will
	   not handle parameter	hashrefs, trusting Moose to do that.

	   This	function cannot	be exported.

BUGS
       Please report any bugs to
       <http://rt.cpan.org/Dist/Display.html?Queue=MooX-Traits>.

SEE ALSO
       MooX::Traits.

AUTHOR
       Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE
       This software is	copyright (c) 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.

perl v5.32.1			  2014-09-16		 MooX::Traits::Util(3)

NAME | SYNOPSIS | DESCRIPTION | BUGS | SEE ALSO | AUTHOR | COPYRIGHT AND LICENCE | DISCLAIMER OF WARRANTIES

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=MooX::Traits::Util&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help