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 )