Devel-Optic

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

   },
   "name" : "Devel-Optic",
   "prereqs" : {
      "configure" : {
         "requires" : {
            "ExtUtils::MakeMaker" : "0"
         }
      },
      "runtime" : {
         "requires" : {
            "PadWalker" : "2.3",
            "Ref::Util" : "0.204",
            "Scalar::Util" : "0",
            "Sub::Info" : "0.002",
            "perl" : "5.010"
         }
      },
      "test" : {
         "requires" : {
            "Test2::Plugin::NoWarnings" : "0.08",
            "Test2::V0" : "0.000100"

META.yml  view on Meta::CPAN

  Devel::Optic::Lens::Perlish::Constants:
    file: lib/Devel/Optic/Lens/Perlish/Constants.pm
    version: '0.015'
  Devel::Optic::Lens::Perlish::Interpreter:
    file: lib/Devel/Optic/Lens/Perlish/Interpreter.pm
    version: '0.015'
  Devel::Optic::Lens::Perlish::Parser:
    file: lib/Devel/Optic/Lens/Perlish/Parser.pm
    version: '0.015'
requires:
  PadWalker: '2.3'
  Ref::Util: '0.204'
  Scalar::Util: '0'
  Sub::Info: '0.002'
  perl: '5.010'
resources:
  bugtracker: https://github.com/kanatohodets/Devel-Optic/issues
  homepage: https://github.com/kanatohodets/Devel-Optic
  repository: https://github.com/kanatohodets/Devel-Optic.git
version: '0.015'
x_generated_by_perl: v5.28.1

Makefile.PL  view on Meta::CPAN

  "ABSTRACT" => "Production safe data inspector",
  "AUTHOR" => "Ben Tyler <btyler\@cpan.org>",
  "CONFIGURE_REQUIRES" => {
    "ExtUtils::MakeMaker" => 0
  },
  "DISTNAME" => "Devel-Optic",
  "LICENSE" => "perl",
  "MIN_PERL_VERSION" => "5.010",
  "NAME" => "Devel::Optic",
  "PREREQ_PM" => {
    "PadWalker" => "2.3",
    "Ref::Util" => "0.204",
    "Scalar::Util" => 0,
    "Sub::Info" => "0.002"
  },
  "TEST_REQUIRES" => {
    "Test2::Plugin::NoWarnings" => "0.08",
    "Test2::V0" => "0.000100"
  },
  "VERSION" => "0.015",
  "test" => {
    "TESTS" => "t/*.t t/lens-perlish/*.t"
  }
);


my %FallbackPrereqs = (
  "PadWalker" => "2.3",
  "Ref::Util" => "0.204",
  "Scalar::Util" => 0,
  "Sub::Info" => "0.002",
  "Test2::Plugin::NoWarnings" => "0.08",
  "Test2::V0" => "0.000100"
);


unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
  delete $WriteMakefileArgs{TEST_REQUIRES};

README.md  view on Meta::CPAN

- O(1), not O(n) (or worse)

    I'd like to avoid globs or matching syntax that might end up iterating over
    unbounded chunks of a data structure. Traversing a small, fixed number of keys
    in 'parallel' sounds like a sane extension, but anything which requires
    iterating over the entire set of hash keys or array indicies is likely to
    surprise when debugging systems with unexpectedly large data structures.

# SEE ALSO

- [PadWalker](https://metacpan.org/pod/PadWalker)
- [Devel::Probe](https://metacpan.org/pod/Devel::Probe)

dist.ini  view on Meta::CPAN

name    = Devel-Optic
author  = Ben Tyler <btyler@cpan.org>
license = Perl_5
copyright_holder = Ben Tyler
copyright_year   = 2019

[Prereqs]
perl = 5.010
PadWalker = 2.3
Ref::Util = 0.204
Scalar::Util = 0
Sub::Info = 0.002

[Prereqs / TestRequires]
Test2::V0 = 0.000100
Test2::Plugin::NoWarnings = 0.08

[PkgVersion]
[GithubMeta]

lib/Devel/Optic.pm  view on Meta::CPAN


use strict;
use warnings;

use Carp qw(croak);
use Scalar::Util qw(looks_like_number);
use Ref::Util qw(is_ref is_arrayref is_hashref is_scalarref is_coderef is_regexpref);

use Sub::Info qw(sub_info);

use PadWalker qw(peek_my);

use Devel::Optic::Lens::Perlish;

use constant {
    DEFAULT_SCALAR_TRUNCATION_SIZE => 256,
    DEFAULT_SCALAR_SAMPLE_SIZE => 64,
    DEFAULT_SAMPLE_COUNT => 4,
};

sub new {

lib/Devel/Optic.pm  view on Meta::CPAN

        }

        if ($subject eq "") {
            return '"" (len 0)';
        }

        $subject = $$subject if is_scalarref($subject);
        my $scalar_truncation_size = $self->{scalar_truncation_size};
        my $len = length $subject;

        # simple scalars we can truncate (PadWalker always returns refs, so
        # this is pretty safe from accidentally substr-ing an array or hash).
        # Also, once we know we're dealing with a gigantic string (or
        # number...), we can trim much more aggressively without hurting user
        # understanding too much.

        if ($len <= $scalar_truncation_size) {
            return sprintf(
                "%s%s (len %d)",
                $ref ? "$ref " : "",
                $subject,

lib/Devel/Optic.pm  view on Meta::CPAN

surprise when debugging systems with unexpectedly large data structures.

=back

=head1 SEE ALSO

=over 4

=item *

L<PadWalker>

=item *

L<Devel::Probe>

=back

=head1 AUTHOR

Ben Tyler <btyler@cpan.org>



( run in 0.951 second using v1.01-cache-2.11-cpan-05444aca049 )