NAME

Black::Board::Manual - Manual for Black::Board::Manual

VERSION

version 0.0001

DESCRIPTION

Currently this is a place I'm sticking my notes.

EXAMPLES

LogDispatch

my $logger = new Log::Dispatch(
    outputs => [
        [ Screen => ( 'min_level' => 'debug' ) ]
    ]
);

topic LogDispatch => subscribe => [ sub {
    $logger->log( %{ $_->params } );
    return $_->cancel_bubble;
} ];

subscriber LogDispatch => sub {
    return $_->clone_with_params(
        { message => '[Prefix] ' . $_->params->{message} }
    );
};

publish LogDispatch => 
    message => "Something that needs logging",
    level => "alert";

LogDispatch with Bread::Board

use Bread::Board;
use Black::Board;

container Logger => as {
    my $s = service LogDispatch => (
        lifecycle => 'Singleton',
        block => sub {
            Log::Dispatch->new(
                Outputs => [
                    [ Screen => ( min_level => 'debug' ) ]
                ]
            );
        }
    );
    topic LogDispatch => as {
        $s->get->log( %{ $_->params } );
        return $_->cancel_bubble;
    };
};
container Plugin => as {
    subscriber LogDispatch => as {
        return $_->clone_with_params(
            { message => '[Plugin] ' . $_->params->{message} }
        )
    };
    service Plugin1 => (
        block => sub { ... }
    );
};

LogDispatch no sugar

my $publisher = Black::Board::Publisher->new;

my $log_topic = Black::Board::Topic->new(
    name => "LogDispatch"
);

$publisher->add_topic( $log_dispatch );

my $logger = new Log::Dispatch(
    outputs => [
        [ Screen => ( 'min_level' => 'debug' ) ]
    ]
);

$log_topic->register_subscriber(
    Black::Board::Subscriber->new(
        subscription => sub {
            $logger->log( %{ $_->params } );
            return $_->cancel_bubble;
        }
    )
);

$log_topic->register_subscriber(
    Black::Board::Subscriber->new(
        subscription => sub {
            return $_->clone(
                params => $_->params->merge( {
                    message => '[Prefix] ' . $_->params->{message}
                } )
            )
        }
    )
);

$publisher->publish(
    topics  => [ 'LogDispatch' ],
    message => {
        params => {
            message => "Something that needs logging",
            level   => "alert"
        }
    }
);

AUTHOR

Scott Beck <sabeck@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Scott Beck <sabeck@cpan.org>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.