NAME

App::vaporcalc::CmdEngine

SYNOPSIS

use App::vaporcalc::CmdEngine;
my $eng = App::vaporcalc::CmdEngine->new;
my $help = $eng->prepare_cmd( subject => 'help' );
# See App::vaporcalc::Role::UI::ParseCmd,
#     App::vaporcalc::Role::UI::PrepareCmd,
#     App::vaporcalc::Role::UI::Cmd,
#     App::vaporcalc::Cmd::Result

DESCRIPTION

A class containing a valid "subject_list" for use with vaporcalc(1) command handler roles; see "CONSUMES".

ATTRIBUTES

subject_list

The list of valid vaporcalc(1) subjects (as an List::Objects::WithUtils::Array).

Built by scanning classes in the App::vaporcalc::Cmd::Subject:: namespace via Module::Pluggable and collecting the results of calling their respective _subject methods, which must return unique strings that can be transformed into the appropriate class name; see App::vaporcalc::Role::UI::Cmd.

Command classes without a subject will produce a warning and be omitted from the subject_list.

METHODS

rebuild_subject_list

Rebuilds the "subject_list" by re-scanning the App::vaporcalc::Cmd::Subject:: namespace.

search_path

# Current command module search path:
$eng->search_path;

# Replace the current search path(s):
$eng->search_path( new => 'My::vaporcalc::Cmds' );

# Add another search path & rebuild our subject_list:
$eng->search_path( add => 'My::vaporcalc::Toys' );
$eng->rebuild_subject_list;

Modify the pluggable command module search path. Imported from Module::Pluggable; see there for details.

After search paths have been modified, "rebuild_subject_list" must be called to load the newly-found modules and regenerate the "subject_list" attribute.

CONSUMES

App::vaporcalc::Role::UI::ParseCmd

App::vaporcalc::Role::UI::PrepareCmd

"search_path" in Module::Pluggable

SEE ALSO

App::vaporcalc::Role::UI::Cmd contains an example command subject in the SYNOPSIS.

AUTHOR

Jon Portnoy <avenj@cobaltirc.org>