Data-Rebuilder
view release on metacpan or search on metacpan
no_index:
directory:
- inc
- t
requires:
B: 0
B::Deparse: 0
Carp: 0
Data::Polymorph: 0
Lexical::Alias: 0
PadWalker: 0
Path::Class: 0
Scalar::Util: 0
Sub::Name: 0
UNIVERSAL: 0
version: 0.01
#
# MakeMaker Parameters:
# ABSTRACT => q[Builds an object rebuilder.]
# AUTHOR => q[lieutar <lieutar@1dk.jp>]
# DIR => []
# DISTNAME => q[Data-Rebuilder]
# NAME => q[Data::Rebuilder]
# NO_META => q[1]
# PL_FILES => { }
# PREREQ_PM => { PadWalker=>q[0], Scalar::Util=>q[0], UNIVERSAL=>q[0], B::Deparse=>q[0], Lexical::Alias=>q[0], IO::String=>q[0], ExtUtils::MakeMaker=>q[6.44], Data::Polymorph=>q[0], Sub::Name=>q[0], B=>q[0], Carp=>q[0], Test::More=>q[0], Path::Cl...
# VERSION => q[0.01]
# dist => { PREOP=>q[$(PERL) -I. "-MModule::Install::Admin" -e "dist_preop(q($(DISTVNAME)))"] }
# test => { TESTS=>q[t/00-load.t t/10-simple.t t/20-object.t t/30-cycle.t t/40-weak.t t/50-tied.t t/60-sleep.t t/boilerplate.t t/dependencies.t t/perlcritic.t t/pod-coverage.t t/pod.t] }
# --- MakeMaker post_initialize section:
# --- MakeMaker const_config section:
# These definitions are from config.sh (via /usr/lib/perl5/5.10/i686-cygwin/Config.pm).
$(NOECHO) $(ECHO) ' <ABSTRACT>Builds an object rebuilder.</ABSTRACT>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <AUTHOR>lieutar <lieutar@1dk.jp></AUTHOR>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="B" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="B-Deparse" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Carp" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Data-Polymorph" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="ExtUtils-MakeMaker" VERSION="6,44,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="IO-String" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Lexical-Alias" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="PadWalker" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Path-Class" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Scalar-Util" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Sub-Name" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Test-More" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="UNIVERSAL" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="cygwin-thread-multi-64int-5.1" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
Makefile.PL view on Meta::CPAN
all_from 'lib/Data/Rebuilder.pm';
author 'lieutar <lieutar@1dk.jp>';
requires 'B';
requires 'Scalar::Util';
requires 'UNIVERSAL';
requires 'Carp';
requires 'Data::Polymorph';
requires 'Sub::Name';
requires 'Lexical::Alias';
requires 'PadWalker';
requires 'B::Deparse';
requires 'Path::Class';
build_requires 'Test::More';
build_requires 'IO::String';
auto_install;
WriteAll;
lib/Data/Rebuilder.pm view on Meta::CPAN
=cut
use B;
use Scalar::Util qw( isweak refaddr blessed looks_like_number);
use UNIVERSAL qw(isa can);
use Carp;
use Sub::Name;
use Path::Class;
use Lexical::Alias;
use B::Deparse;
use PadWalker;
use Data::Polymorph;
=head1 STATIC METHODS
=over 4
=item safe_require
safe_require ( $0 ); # does not load
lib/Data/Rebuilder.pm view on Meta::CPAN
},
#################################
'CodeRef' => sub{
my $cv = shift;
my $target = shift || $cv;
my $var = $self->ref_to_var($target);
my $dp = ( $self->{_deparse}
||= (__PACKAGE__."::B::Deparse")->new );
my $closed = PadWalker::closed_over( $cv );
my $b = B::svref_2object($cv);
my $name = $b->GV->NAME;
my @vars = ();
foreach my $key (keys %$closed) {
my $val = $closed->{$key};
if( $self->poly->type($val) eq 'RefRef' &&
$self->_is_cycled($$val)) {
push @vars,
sprintf(' my %s = undef; #cycled RefRef', $key);
my $lazy = $self->_lazy->{refaddr $$val} ||= [];
push
(@$lazy,
'require PadWalker;',
sprintf('${PadWalker::closed_over(%s)->{%s}} = %s;',
$var,
$self->freeze($key),
$self->freeze($$val))
);
}
else {
push( @vars,
sprintf ( " my \%s = undef;\n".
' Lexical::Alias::alias_r( %s , \%s );',
$key,
( run in 0.723 second using v1.01-cache-2.11-cpan-05444aca049 )