The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

CCCP::AttributeInspector - show list methods and attributes from package

SYNOPSIS

        package Bar;
        use base qw[CCCP::AttributeInspector];
        sub new {}
        sub bar_method1 :Chain :CustomBar('any_custom') {}
        sub bar_method2 :CustomBar :AbsPath('/some/abs/path') {}
        1;
    
    # ------------------
    
        package Foo;
        use base qw[CCCP::AttributeInspector];
        sub new {}
        sub foo_method1 :Local :Custom('any_custom') {}
        sub foo_method2 :Private :Custom('some_attribute') {}
        1;    
    
    # ------------------
    
    package SomeDispatcher;
    use Foo;
    use Bar;
    
    my @methods = Foo->all_methods();
        #  'foo_method1'
        #  'foo_method2'
        #  'new'

        @methods = Foo->att_methods();
        #  'foo_method1'
        #  'foo_method2'    
    
        @methods = Bar->all_methods()
        #  'bar_method2'
        #  'bar_method1'
        #  'new'
    
    @methods = Bar->att_methods()
        #  'bar_method2'
        #  'bar_method1'
    
        @methods = Bar->att_methods(['Chain','CustomBar'])
    #  'bar_method1'
    
        @methods =  Bar->att_methods(['CustomBar'])
        #  'bar_method2'
    #  'bar_method1'   
    
        @methods =  Bar->att_methods({'AbsPath' => '/some/abs/path'})
        #  'bar_method2'
    
        my $att_list =  Bar->get_attributes('bar_method2')
        #  HASH(0xf126f0)
        #   'AbsPath' => '/some/abs/path'
        #   'CustomBar' => ''    

DESCRIPTION

Attributes is a perfect technology for defined context on your methods. This is be very comfortable for implementation any dispatcher or logic controller.

METHODS

all_methods

Return all methods from package (except any base-package methods).

Return array or array reference depend on call-context.

att_methods($param)

If $param is false (or not defined), method return all name methods who have any attributes. If $param is array reference with list attributes name, method return all name methods who have this attributes. If $param is hash reference with attributes name and attributes value, method return all name methods who have such attributes.

Return array or array reference depend on call-context.

get_attributes($name_method)

Return hash freference with attributes and their value.

packages

Return list package name who have CCCP::AttributeInspector as base class.

AUTHOR

Ivan Sivirinov

COPYRIGHT AND LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8 or, at your option, any later version of Perl 5 you may have available.