KiokuDB

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

            "Moose::Exporter" : "0",
            "Moose::Role" : "0",
            "Moose::Util" : "0",
            "Moose::Util::MetaRole" : "0",
            "Moose::Util::TypeConstraints" : "0",
            "MooseX::Clone" : "0.04",
            "MooseX::Clone::Meta::Attribute::Trait::NoClone" : "0",
            "MooseX::Role::Parameterized" : "0.10",
            "MooseX::YAML" : "0.04",
            "POSIX" : "0",
            "PadWalker" : "1.9",
            "Path::Class" : "0",
            "Scalar::Util" : "0",
            "Scope::Guard" : "0",
            "Search::GIN::Driver" : "0",
            "Search::GIN::Extract" : "0",
            "Search::GIN::Query::Class" : "0.03",
            "Set::Object" : "1.26",
            "Storable" : "0",
            "Sub::Exporter" : "0",
            "Symbol" : "0",

META.yml  view on Meta::CPAN

  Moose::Exporter: '0'
  Moose::Role: '0'
  Moose::Util: '0'
  Moose::Util::MetaRole: '0'
  Moose::Util::TypeConstraints: '0'
  MooseX::Clone: '0.04'
  MooseX::Clone::Meta::Attribute::Trait::NoClone: '0'
  MooseX::Role::Parameterized: '0.10'
  MooseX::YAML: '0.04'
  POSIX: '0'
  PadWalker: '1.9'
  Path::Class: '0'
  Scalar::Util: '0'
  Scope::Guard: '0'
  Search::GIN::Driver: '0'
  Search::GIN::Extract: '0'
  Search::GIN::Query::Class: '0.03'
  Set::Object: '1.26'
  Storable: '0'
  Sub::Exporter: '0'
  Symbol: '0'

Makefile.PL  view on Meta::CPAN

    "Moose::Exporter" => 0,
    "Moose::Role" => 0,
    "Moose::Util" => 0,
    "Moose::Util::MetaRole" => 0,
    "Moose::Util::TypeConstraints" => 0,
    "MooseX::Clone" => "0.04",
    "MooseX::Clone::Meta::Attribute::Trait::NoClone" => 0,
    "MooseX::Role::Parameterized" => "0.10",
    "MooseX::YAML" => "0.04",
    "POSIX" => 0,
    "PadWalker" => "1.9",
    "Path::Class" => 0,
    "Scalar::Util" => 0,
    "Scope::Guard" => 0,
    "Search::GIN::Driver" => 0,
    "Search::GIN::Extract" => 0,
    "Search::GIN::Query::Class" => "0.03",
    "Set::Object" => "1.26",
    "Storable" => 0,
    "Sub::Exporter" => 0,
    "Symbol" => 0,

Makefile.PL  view on Meta::CPAN

  "Moose::Exporter" => 0,
  "Moose::Role" => 0,
  "Moose::Util" => 0,
  "Moose::Util::MetaRole" => 0,
  "Moose::Util::TypeConstraints" => 0,
  "MooseX::Clone" => "0.04",
  "MooseX::Clone::Meta::Attribute::Trait::NoClone" => 0,
  "MooseX::Role::Parameterized" => "0.10",
  "MooseX::YAML" => "0.04",
  "POSIX" => 0,
  "PadWalker" => "1.9",
  "Path::Class" => 0,
  "Scalar::Util" => 0,
  "Scope::Guard" => 0,
  "Search::GIN::Driver" => 0,
  "Search::GIN::Driver::Hash" => 0,
  "Search::GIN::Extract" => 0,
  "Search::GIN::Extract::Class" => 0,
  "Search::GIN::Extract::Delegate" => 0,
  "Search::GIN::Query::Class" => "0.03",
  "Set::Object" => "1.26",

lib/KiokuDB/TypeMap/Entry/Closure.pm  view on Meta::CPAN

package KiokuDB::TypeMap::Entry::Closure;
BEGIN {
  $KiokuDB::TypeMap::Entry::Closure::AUTHORITY = 'cpan:NUFFIN';
}
$KiokuDB::TypeMap::Entry::Closure::VERSION = '0.57';
use Moose;

use Carp qw(croak);
use Scalar::Util qw(refaddr);
use PadWalker 1.9;
use Class::Load ();

no warnings 'recursion';

use namespace::clean -except => 'meta';

with qw(KiokuDB::TypeMap::Entry::Std);

sub compile_collapse_body {
    my $self = shift;

lib/KiokuDB/TypeMap/Entry/Closure.pm  view on Meta::CPAN

        my ( $collapser, %args ) = @_;

        my $sub = $args{object};

        my ( $pkg, $name ) = Class::MOP::get_code_info($sub);

        my %data;

        # FIXME make this customizable on a per sub and per typemap level
        if ( $name eq '__ANON__' ) {
            my $pad = PadWalker::closed_over($sub);

            if ( keys %$pad ) {
                my $collapsed_pad = $collapser->visit($pad);

                $data{pad} = $collapsed_pad;

                my $buffer = $collapser->_buffer;
                my $pad_entry_data = blessed $collapsed_pad ? $buffer->id_to_entry( $collapsed_pad->id )->data : $collapsed_pad;

                $buffer->first_class->insert(map { $_->id } values %$pad_entry_data ); # maybe only if entry($_->id)->object's refcount is > 1 (only shared closure vars) ?

lib/KiokuDB/TypeMap/Entry/Closure.pm  view on Meta::CPAN


            # FIXME Parse::Perl
            my $sub = eval "
                my ( $vars );
                sub $body;
            ";

            my $e = $@;

            $linker->queue_finalizer(sub {
                PadWalker::set_closed_over($sub, $pad);
            }) if $sub;

            ( $sub, $e );
        } else {
            eval "sub $body", $@;
        }
    };

    die $e unless $sub;



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