Stevan Little > Moose-0.34 > Moose::Util

Download:
Moose-0.34.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  8
Open  41
Stalled  7
View/Report Bugs
Module Version: 0.02   Source   Latest Release: Moose-2.1302-TRIAL

NAME ^

Moose::Util - Utilities for working with Moose classes

SYNOPSIS ^

  use Moose::Util qw/find_meta does_role search_class_by_role/;

  my $meta = find_meta($object) || die "No metaclass found";

  if (does_role($object, $role)) {
    print "The object can do $role!\n";
  }

  my $class = search_class_by_role($object, 'FooRole');
  print "Nearest class with 'FooRole' is $class\n";

DESCRIPTION ^

This is a set of utility functions to help working with Moose classes. This is an experimental module, and it's not 100% clear what purpose it will serve. That said, ideas, suggestions and contributions to this collection are most welcome. See the TODO section below for a list of ideas for possible functions to write.

EXPORTED FUNCTIONS ^

find_meta ($class_or_obj)

This will attempt to locate a metaclass for the given $class_or_obj and return it.

does_role ($class_or_obj, $role_name)

Returns true if $class_or_obj can do the role $role_name.

search_class_by_role ($class_or_obj, $role_name)

Returns first class in precedence list that consumed $role_name.

apply_all_roles ($applicant, @roles)

Given an $applicant (which can somehow be turned into either a metaclass or a metarole) and a list of @roles this will do the right thing to apply the @roles to the $applicant. This is actually used internally by both Moose and Moose::Role, and the @roles will be pre-processed through Data::OptList::mkopt to allow for the additional arguments to be passed.

TODO ^

Here is a list of possible functions to write

discovering original method from modified method
search for origin class of a method or attribute

BUGS ^

All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.

AUTHOR ^

Anders Nor Berle <debolaz@gmail.com>

with contributions from:

Robert (phaylon) Sedlacek

Stevan Little

COPYRIGHT AND LICENSE ^

Copyright 2007-2008 by Infinity Interactive, Inc.

http://www.iinteractive.com

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

syntax highlighting: