The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Infobot::Base - Useful methods for Infobot modules

SYNOPSIS

 package Infobot::YourModule;

        use base qw( Infobot::Base );

        our @required_modules = qw( Your::Deps::Here );

 package main;
 
        die unless Infobot::YourModule->load();
 
  my $object = Infobot::YourModule->new();      

DESCRIPTION

This module provides some useful tools that are required by most of the other Infobot components.

METHODS

mk_accessor et al

Inherits from Class::Accessor.

new

This application has been designed with the idea that a new method should be as lightweight as possible, with all initialisation done explicitly with an init() method.

This implementation of new() is about as simple as it gets - will return a hashref blessed in to your class.

load

infobot calls the load() method on all packages it would like to use. This allows a module to check for module dependencies, and anything else it would like. It should return 1 if the plugin can be used, and 0 if not.

The default load module here simply returns the result of an empty call to require_modules (so allows you to set module dependencies in @modules_dependencies.

require_modules

Accepts a list of modules, and attempts to load them using UNIVERSAL::Require. Returns 1 if all load, 0 if any fail. This method will short-circuit on the first error, and will write to the application log multiplexer (priority 2).

If you don't provide a list of modules, the existance of @required_modules is checked for in your package, and used.

require_base

Accepts a single module, and attempts to require it using require_modules). Adds it to the calling package's ISA.

log

Shortcut to Infobot::Stash-new->log()>, the log multiplexer object from Infobot::Log.

set_name

Accepts an object type (such as 'log', 'conduit', or 'query'), and a name, sets $self-{name}> to that name, and sets <$self-{config}>> to <$stash-{config}->{$type}->{$name}->{extras}>>.

stash

Application-wide stash. Accepts either a key (for lookups) or a key + value (for storage).