Data-Scan
view release on metacpan or search on metacpan
lib/Data/Scan/Impl/Printer.pm view on Meta::CPAN
use strict;
use warnings FATAL => 'all';
package Data::Scan::Impl::Printer;
# ABSTRACT: Data::Scan printer implementation
our $VERSION = '0.009'; # VERSION
our $AUTHORITY = 'cpan:JDDPAUSE'; # AUTHORITY
use Moo;
use B::Deparse;
use Class::Inspector;
use Perl::OSType qw/is_os_type/;
my $_HAVE_Win32__Console__ANSI;
BEGIN {
#
# Will/Should success only on Win32
#
$_HAVE_Win32__Console__ANSI = eval 'use Win32::Console::ANSI; 1;' ## no critic qw/BuiltinFunctions::ProhibitStringyEval/
}
use Scalar::Util 1.26 qw/reftype refaddr looks_like_number/;
use Term::ANSIColor;
use Types::Standard -all;
use Types::Common::Numeric -all;
#
# My way of matching only printable ASCII characters
#
my $_ASCII_PRINT = quotemeta(join('', map { chr } (32,33..126)));
my $_NON_ASCII_PRINT_RE = qr/[^$_ASCII_PRINT]/;
#
# Avoid calls to arybase and predictible results
#
my $ARRAY_START_INDICE = $[;
my $ARRAY_START_INDICE_PLUS_1 = $ARRAY_START_INDICE + 1;
my $ARRAY_START_INDICE_PLUS_2 = $ARRAY_START_INDICE_PLUS_1 + 1;
my $ARRAY_START_INDICE_PLUS_3 = $ARRAY_START_INDICE_PLUS_2 + 1;
my $ARRAY_START_INDICE_MINUS_1 = $ARRAY_START_INDICE - 1;
has handle => (is => 'ro', isa => FileHandle, default => sub { return \*STDOUT });
has indent => (is => 'ro', isa => Str, default => sub { return ' ' });
has max_depth => (is => 'ro', isa => PositiveOrZeroInt, default => sub { return 0 });
has undef => (is => 'ro', isa => Str, default => sub { return 'undef' });
has unknown => (is => 'ro', isa => Str, default => sub { return '???' });
has newline => (is => 'ro', isa => Str, default => sub { return "\n" });
has with_ansicolor => (is => 'ro', isa => Bool, default => sub { return __PACKAGE__->_canColor });
has array_start => (is => 'ro', isa => Str, default => sub { return '[' });
has array_next => (is => 'ro', isa => Str, default => sub { return ',' });
has array_end => (is => 'ro', isa => Str, default => sub { return ']' });
has hash_start => (is => 'ro', isa => Str, default => sub { return ' {' });
has hash_next => (is => 'ro', isa => Str, default => sub { return ',' });
has hash_end => (is => 'ro', isa => Str, default => sub { return '}' });
has hash_separator => (is => 'ro', isa => Str, default => sub { return ' => ' });
has indice_start => (is => 'ro', isa => Str, default => sub { return '[' });
has indice_end => (is => 'ro', isa => Str, default => sub { return '] ' });
has with_indices_full => (is => 'ro', isa => Bool, default => sub { return !!0 });
has address_start => (is => 'ro', isa => Str, default => sub { return '(' });
( run in 0.544 second using v1.01-cache-2.11-cpan-97f6503c9c8 )