Data-Rebuilder

 view release on metacpan or  search on metacpan

META.yml  view on Meta::CPAN

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

Makefile  view on Meta::CPAN

#
#   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).

Makefile  view on Meta::CPAN

	$(NOECHO) $(ECHO) '    <ABSTRACT>Builds an object rebuilder.</ABSTRACT>' >> $(DISTNAME).ppd
	$(NOECHO) $(ECHO) '    <AUTHOR>lieutar &lt;lieutar@1dk.jp&gt;</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 )