NAME

App::CmdDispatch::Table - Dispatch table with support for aliases.

VERSION

This document describes App::CmdDispatch::Table version 0.44

SYNOPSIS

use App::CmdDispatch::Table;

my $table = App::CmdDispatch::Table->new(
    {
        foo => { code => \&do_foo, },
        bar => { code => \&do_bar, },
    },
    {
        foo2 => 'foo again',
    }
);

$table->run( 'foo', 'twice' );

DESCRIPTION

This module handles the core functionality of the dispatch table system. This includes the dispatch table itself and the run() method that dispatches requested commands. In addition, this module handles aliasing functionality.

INTERFACE

new( $command_hash, $alias_hash )

Create a new App::CmdDispatch::Table object. This method can take one or two hashrefs as arguments. The first is required and describes the commands. The second is optional and provides a mapping of aliases to the command string that the alias maps to.

run( $cmd, @args )

Given a command string (or possibly an alias) and a set of arguments, this method executes the associated code.

command_list()

This method return the list of commands in sorted order. This is basically the keys of the dispatch table.

get_command( $cmd )

This method returns the hash that represents the supplied command.

alias_list()

This method returns a sorted list of the aliases in this table.

get_alias( $alias )

This method returns the string that the supplied alias maps to.

has_aliases()

This method returns a true value if the table has any aliases, otherwise it returns a false value.

CONFIGURATION AND ENVIRONMENT

None.

DEPENDENCIES

None.

INCOMPATIBILITIES

None reported.

BUGS AND LIMITATIONS

No bugs have been reported.

AUTHOR

G. Wade Johnson wade@anomaly.org

LICENCE AND COPYRIGHT

Copyright (c) 2013, G. Wade Johnson wade@anomaly.org. All rights reserved.

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

DISCLAIMER OF WARRANTY

BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.