Term::UI::History - Term::UI::History documentation


Term-UI documentation Contained in the Term-UI distribution.

Index


Code Index:

NAME

Top

Term::UI::History

SYNOPSIS

Top

    use Term::UI::History qw[history];

    history("Some message");

    ### retrieve the history in printable form
    $hist  = Term::UI::History->history_as_string;

    ### redirect output
    local $Term::UI::History::HISTORY_FH = \*STDERR;

DESCRIPTION

Top

This module provides the history function for Term::UI, printing and saving all the UI interaction.

Refer to the Term::UI manpage for details on usage from Term::UI.

This module subclasses Log::Message::Simple. Refer to its manpage for additional functionality available via this package.

FUNCTIONS

Top

history("message string" [,VERBOSE])

Records a message on the stack, and prints it to STDOUT (or actually $HISTORY_FH, see the GLOBAL VARIABLES section below), if the VERBOSE option is true.

The VERBOSE option defaults to true.

GLOBAL VARIABLES

Top

$HISTORY_FH

This is the filehandle all the messages sent to history() are being printed. This defaults to *STDOUT.

See Also

Top

Log::Message::Simple, Term::UI

AUTHOR

Top

This module by Jos Boumans <kane@cpan.org>.

COPYRIGHT

Top


Term-UI documentation Contained in the Term-UI distribution.
package Term::UI::History;

use strict;
use base 'Exporter';
use base 'Log::Message::Simple';

BEGIN {
    use Log::Message private => 0;

    use vars      qw[ @EXPORT $HISTORY_FH ];
    @EXPORT     = qw[ history ];
    my $log     = new Log::Message;
    $HISTORY_FH = \*STDOUT;

    for my $func ( @EXPORT ) {
        no strict 'refs';
        
        *$func = sub {  my $msg     = shift;
                        $log->store(
                                message => $msg,
                                tag     => uc $func,
                                level   => $func,
                                extra   => [@_]
                        );
                };
    }

    sub history_as_string {
        my $class = shift;

        return join $/, map { $_->message } __PACKAGE__->stack;
    }
}


{   package Log::Message::Handlers;
    
    sub history {
        my $self    = shift;
        my $verbose = shift;
           $verbose = 1 unless defined $verbose;    # default to true

        ### so you don't want us to print the msg? ###
        return if defined $verbose && $verbose == 0;

        local $| = 1;
        my $old_fh = select $Term::UI::History::HISTORY_FH;

        print $self->message . "\n";
        select $old_fh;

        return;
    }
}


1;

# Local variables:
# c-indentation-style: bsd
# c-basic-offset: 4
# indent-tabs-mode: nil
# End:
# vim: expandtab shiftwidth=4: