NAME
====

Object::Examine - additional object introspection methods

SYNOPSIS
========

   use Object::Examine;
   $some_random_object does Introspector;
   say $some_random_object.menu;

DESCRIPTION
===========

This module makes an `Introspector` role available which adds some additional object introspection methods, notably a wrapper around the "^methods" method named "menu".

Methods
-------

 * menu -- a long menu of available methods, one per line

The `menu` method uses the .^methods(:local) list as a source, but filters and sorts it, and adds a second column showing the Class it comes from.

Internal Routines
-----------------

 * methods_for

 * clean_methods

MOTIVATION
==========

There's a useful meta-method named "^methods" which gives you a list of available methods on an object or class, but unfortunately in uses a format which is perhaps LTA for human consumption:

   my $set = Set.new(<alphan betazoid gammera>);
   say $set.^methods;

   # (iterator clone STORE keyof grab SET-SELF Real elems roll Numeric new-from-pairs total pickpairs RAW-HASH of Int Num default grabpairs fmt Capture pick WHICH Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new new Method+{is-nodal}.new Method+{is-nodal}.new minpairs maxpairs Bool Method+{is-nodal}.new Method+{is-nodal}.new ACCEPTS Str gist perl Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new Method+{is-nodal}.new BUILDALL)

This list is not sorted, it contains redundant entries, and it includes the rather mysterious "Method+{is-nodal}.new" which the average user probably does not want to hear about. By default, it's not very complete, and you might want to use ".^methods(:all)" or ".^methods(:local)" -- presuming you know about those options.

The "menu" method tries to fix these issues, though at the expense of being rather verbose:

   $set does Introspector;
   $set.menu

   # ACCEPTS                   Set
   # BIND-POS                  Any
   # BUILDALL                  Set
   # BUILD_LEAST_DERIVED       Mu
   # Bool                      Set
   # CREATE                    Mu
   # Capture                   Set
   # DUMP                      Mu
   #  ...
   # item                      Mu
   # iterator                  Set
   # keyof                     Set
   # lazy-if                   Any
   # match                     Any
   # maxpairs                  Set
   # minpairs                  Set
   # new                       Set
   # new-from-pairs            Set
   # nl-out                    Any
   #  ...

Note that the second column tells you the Class that defines the method, which may help find appropriate documentation.

AUTHOR
======

Joseph Brenner, [email protected]

COPYRIGHT AND LICENSE
=====================

Copyright (C) 2018 by Joseph Brenner

Released under "The Artistic License 2.0".