NAME

Error::Pure::Output::ANSIColor - ANSIColor Output subroutines for Error::Pure.

SYNOPSIS

use Error::Pure::Output::ANSIColor qw(err_bt_pretty err_bt_pretty_rev err_die err_line
        err_line_all err_print err_print_var);

my $ret = err_bt_pretty(@errors);
my @ret = err_bt_pretty(@errors);
my $ret = err_bt_pretty_rev(@errors);
my @ret = err_bt_pretty_rev(@errors);
my $ret = err_die(@errors);
my $ret = err_line(@errors);
my $ret = err_line_all(@errors);
my $ret = err_print(@errors);
my $ret = err_print_var(@errors);
my @ret = err_print_var(@errors);

SUBROUTINES

err_bt_pretty

my $ret = err_bt_pretty(@errors);
my @ret = err_bt_pretty(@errors);

Returns string with full backtrace in scalar context.

Returns array of full backtrace lines in array context.

Both with ANSI sequences for terminals.

Format of error is:

ERROR: %s
%s: %s
...
%s %s %s %s
...

Values of error are:

message
message as key, $message as value
...
sub, caller, program, line
...

err_bt_pretty_rev

my $ret = err_bt_pretty_rev(@errors);
my @ret = err_bt_pretty_rev(@errors);

Reverse version of print for err_bt_pretty().

Returns string with full backtrace in scalar context.

Returns array of full backtrace lines in array context.

Both with ANSI sequences for terminals.

Format of error is:

ERROR: %s
%s: %s
...
%s %s %s %s
...

Values of error are:

message
message as key, $message as value
...
sub, caller, program, line
...

err_die(@errors)

my $ret = err_die(@errors);

Returns string with error in classic die style with colors with ANSI sequences for terminals.

Format of error line is: "%s at %s line %s".

Values of error line are: $message(s), $program, $line

err_line

my $ret = err_line(@errors);

Returns string with error on one line with ANSI sequences for terminals.

Use last error in @errors structure.

Format of error is: "#Error [%s:%s] %s\n"

Values of error are: $program, $line, $message

err_line_all

my $ret = err_line_all(@errors);

Returns string with errors each on one line with ANSI sequences for terminals.

Use all errors in @errors structure.

Format of error line is: "#Error [%s:%s] %s\n"

Values of error line are: $program, $line, $message

err_print

my $ret = err_print(@errors);

Print first error with ANSI sequences for terminals.

If error comes from class, print class name before error.

Returns string with error.

err_print_var

my $ret = err_print_var(@errors);
my @ret = err_print_var(@errors);

Print first error with all variables with ANSI sequences for terminals.

Returns error string in scalar mode.

Returns lines of error in array mode.

EXAMPLE1

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_bt_pretty);

# Fictional error structure.
my $err_hr = {
        'msg' => [
                'FOO',
                'KEY',
                'VALUE',
        ],
        'stack' => [
                {
                        'args' => '(2)',
                        'class' => 'main',
                        'line' => 1,
                        'prog' => 'script.pl',
                        'sub' => 'err',
                }, {
                        'args' => '',
                        'class' => 'main',
                        'line' => 20,
                        'prog' => 'script.pl',
                        'sub' => 'eval {...}',
                }
        ],
};

# Print out.
print scalar err_bt_pretty($err_hr);

# Output:
# ERROR: FOO
# KEY: VALUE
# main  err         script.pl  1
# main  eval {...}  script.pl  20

EXAMPLE2

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_line_all);

# Fictional error structure.
my @err = (
        {
                'msg' => [
                        'FOO',
                        'BAR',
                ],
                'stack' => [
                        {
                                'args' => '(2)',
                                'class' => 'main',
                                'line' => 1,
                                'prog' => 'script.pl',
                                'sub' => 'err',
                        }, {
                                'args' => '',
                                'class' => 'main',
                                'line' => 20,
                                'prog' => 'script.pl',
                                'sub' => 'eval {...}',
                        }
                ],
        }, {
                'msg' => ['XXX'],
                'stack' => [
                        {
                                'args' => '',
                                'class' => 'main',
                                'line' => 2,
                                'prog' => 'script.pl',
                                'sub' => 'err',
                        },
                ],
        }
);

# Print out.
print err_line_all(@err);

# Output:
# #Error [script.pl:1] FOO
# #Error [script.pl:2] XXX

EXAMPLE3

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_line);

# Fictional error structure.
my $err_hr = {
        'msg' => [
                'FOO',
                'BAR',
        ],
        'stack' => [
                {
                        'args' => '(2)',
                        'class' => 'main',
                        'line' => 1,
                        'prog' => 'script.pl',
                        'sub' => 'err',
                }, {
                        'args' => '',
                        'class' => 'main',
                        'line' => 20,
                        'prog' => 'script.pl',
                        'sub' => 'eval {...}',
                }
        ],
};

# Print out.
print err_line($err_hr);

# Output:
# #Error [script.pl:1] FOO

EXAMPLE4

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_bt_pretty);

# Fictional error structure.
my @err = (
        {
                'msg' => [
                        'FOO',
                        'BAR',
                ],
                'stack' => [
                        {
                                'args' => '(2)',
                                'class' => 'main',
                                'line' => 1,
                                'prog' => 'script.pl',
                                'sub' => 'err',
                        }, {
                                'args' => '',
                                'class' => 'main',
                                'line' => 20,
                                'prog' => 'script.pl',
                                'sub' => 'eval {...}',
                        }
                ],
        }, {
                'msg' => ['XXX'],
                'stack' => [
                        {
                                'args' => '',
                                'class' => 'main',
                                'line' => 2,
                                'prog' => 'script.pl',
                                'sub' => 'err',
                        },
                ],
        }
);

# Print out.
print scalar err_bt_pretty(@err);

# Output:
# ERROR: FOO
# BAR
# main  err         script.pl  1
# main  eval {...}  script.pl  20
# ERROR: XXX
# main  err         script.pl  2

EXAMPLE5

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_bt_pretty_rev);

# Fictional error structure.
my @err = (
        {
                'msg' => [
                        'FOO',
                        'BAR',
                ],
                'stack' => [
                        {
                                'args' => '(2)',
                                'class' => 'main',
                                'line' => 1,
                                'prog' => 'script.pl',
                                'sub' => 'err',
                        }, {
                                'args' => '',
                                'class' => 'main',
                                'line' => 20,
                                'prog' => 'script.pl',
                                'sub' => 'eval {...}',
                        }
                ],
        }, {
                'msg' => ['XXX'],
                'stack' => [
                        {
                                'args' => '',
                                'class' => 'main',
                                'line' => 2,
                                'prog' => 'script.pl',
                                'sub' => 'err',
                        },
                ],
        }
);

# Print out.
print scalar err_bt_pretty_rev(@err);

# Output:
# ERROR: XXX
# main  err         script.pl  2
# ERROR: FOO
# BAR
# main  err         script.pl  1
# main  eval {...}  script.pl  20

EXAMPLE6

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_print);

# Fictional error structure.
my $err_hr = {
        'msg' => [
                'FOO',
                'BAR',
        ],
        'stack' => [
                {
                        'args' => '(2)',
                        'class' => 'main',
                        'line' => 1,
                        'prog' => 'script.pl',
                        'sub' => 'err',
                }, {
                        'args' => '',
                        'class' => 'main',
                        'line' => 20,
                        'prog' => 'script.pl',
                        'sub' => 'eval {...}',
                }
        ],
};

# Print out.
print err_print($err_hr)."\n";

# Output:
# FOO

EXAMPLE7

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_print);

# Fictional error structure.
my $err_hr = {
        'msg' => [
                'FOO',
                'BAR',
        ],
        'stack' => [
                {
                        'args' => '(2)',
                        'class' => 'Class',
                        'line' => 1,
                        'prog' => 'script.pl',
                        'sub' => 'err',
                }, {
                        'args' => '',
                        'class' => 'mains',
                        'line' => 20,
                        'prog' => 'script.pl',
                        'sub' => 'eval {...}',
                }
        ],
};

# Print out.
print err_print($err_hr)."\n";

# Output:
# Class: FOO

EXAMPLE8

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_print_var);

# Fictional error structure.
my $err_hr = {
        'msg' => [
                'FOO',
                'KEY1',
                'VALUE1',
                'KEY2',
                'VALUE2',
        ],
        'stack' => [
                {
                        'args' => '(2)',
                        'class' => 'main',
                        'line' => 1,
                        'prog' => 'script.pl',
                        'sub' => 'err',
                }, {
                        'args' => '',
                        'class' => 'main',
                        'line' => 20,
                        'prog' => 'script.pl',
                        'sub' => 'eval {...}',
                }
        ],
};

# Print out.
print scalar err_print_var($err_hr);

# Output:
# ERROR: FOO
# KEY1: VALUE1
# KEY2: VALUE2

EXAMPLE9

use strict;
use warnings;

use Error::Pure::Output::ANSIColor qw(err_die);

# Fictional error structure.
my $err_hr = {
        'msg' => [
                'FOO',
                'KEY1',
                'VALUE1',
                'KEY2',
                'VALUE2',
        ],
        'stack' => [
                {
                        'args' => '(2)',
                        'class' => 'main',
                        'line' => 1,
                        'prog' => 'script.pl',
                        'sub' => 'err',
                }, {
                        'args' => '',
                        'class' => 'main',
                        'line' => 20,
                        'prog' => 'script.pl',
                        'sub' => 'eval {...}',
                }
        ],
};

# Print out.
print err_die($err_hr);

# Output:
# FOOKEY1VALUE1KEY2VALUE2 at script.pl line 1.

DEPENDENCIES

Exporter, Readonly, Term::ANSIColor.

SEE ALSO

Task::Error::Pure

Install the Error::Pure modules.

REPOSITORY

https://github.com/michal-josef-spacek/Error-Pure-Output-ANSIColor

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2013-2024 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.05