Youri::Utils - Youri shared functions


Youri-Utils documentation Contained in the Youri-Utils distribution.

Index


Code Index:

NAME

Top

Youri::Utils - Youri shared functions

DESCRIPTION

Top

This module implement some helper functions for all youri applications.

create_instance($class, $config, $options)

Create an instance from a plugin implementing given interface, using given configuration and local options. Returns a plugin instance, or undef if something went wrong.

log_message($message, $time, $process)

COPYRIGHT AND LICENSE

Top


Youri-Utils documentation Contained in the Youri-Utils distribution.
# $Id: /mirror/youri/soft/Utils/trunk/lib/Youri/Utils.pm 2334 2007-03-23T08:48:22.544634Z guillomovitch  $
package Youri::Utils;

use strict;
use warnings;
use base qw(Exporter);
use Carp;
use DateTime;
use English qw(-no_match_vars);
use UNIVERSAL::require;
use version; our $VERSION = qv('0.2.1');

our @EXPORT = qw(
    create_instance
    log_message
);

sub create_instance {
    my ($interface, $config, $options) = @_;

    croak 'No interface given' unless $interface;
    croak 'No config given' unless $config;

    my $class = $config->{class};
    if (!$class) {
        carp "No class given, can't load plugin";
        return;
    }

    # ensure loaded
    $class->require();

    # check interface
    if (!$class->isa($interface)) {
        carp "$class is not a $interface";
        return;
    }

    return $class->new(
        $config->{options} ? %{$config->{options}} : (),
        $options ? %{$options} : (),
    );
}

sub log_message {
    my ($message, $time, $process) = @_;

    print DateTime->now()->set_time_zone('local')->strftime('[%H:%M:%S] ')
        if $time;
    print "$PID " if $process;
    print "$message\n";
}

1;