Carrot
view release on metacpan or search on metacpan
lib/Carrot/Meta/Monad/Phase/Begin.pm view on Meta::CPAN
package Carrot::Meta::Monad::Phase::Begin
# /type class
# //parent_classes
# ::Meta::Monad
# //parameters
# managed_modularity ::Personality::Abstract::Array
# /capability "Capabilities of the $meta_monad during BEGIN."
{
my ($managed_modularity) = @ARGUMENTS;
use strict;
use warnings 'FATAL' => 'all';
BEGIN {
require('Carrot/Meta/Monad/Phase/Begin./manual_modularity.pl');
} #BEGIN
Carrot::Meta::Greenhouse::Package_Loader::provide(
my $managed_file_class = '::Meta::Monad::Managed_File',
my $definitions_class = '::Meta::Monad::Phase::Begin::Definitions');
Carrot::Meta::Greenhouse::Package_Loader::provide_instance(
my $compilation_name = '::Meta::Greenhouse::Compilation_Name',
my $writable_overlay = '::Meta::Greenhouse::Writable_Overlay',
my $translated_errors = '::Meta::Greenhouse::Translated_Errors');
# =--------------------------------------------------------------------------= #
sub attribute_construction
# /type method
# /effect "Constructs the attribute(s) of a newly created instance."
# //parameters
# that ::Meta::Monad
# //returns
{
my ($this, $that) = @ARGUMENTS;
@$this = @$that;
$this->[ATR_PRINCIPLE] = 'modularity';
return;
}
sub managed_hardcoded
# /type method
# /effect ""
# //parameters
# //returns
{
$_[THIS][ATR_PRINCIPLE] = IS_UNDEFINED; #what a hack
return;
}
sub _managed_modularity
# /type method
# /effect ""
# //parameters
# managed_file ::Meta::Monad::Managed_File
# //returns
{
my ($this, $managed_file) = @ARGUMENTS;
my $definitions = $definitions_class->constructor($this);
foreach my $monad_provider (@$managed_modularity)
{
$monad_provider->managed_modularity(
$this,
$definitions);
}
$managed_file->update($definitions);
return;
}
sub DESTROY
# /type method
# /effect ""
# //parameters
# //returns
{
return if (${^GLOBAL_PHASE} eq 'DESTRUCT');
my ($this) = @ARGUMENTS;
return unless (defined($this->[ATR_PRINCIPLE]));
my $manual_file = $this->[ATR_DOT_DIRECTORY]
->entry('manual_modularity.pl');
unless ($manual_file->exists)
{
my $managed_file = $managed_file_class->constructor($this);
my $candidate = $this->[ATR_DOT_DIRECTORY]->entry(
"managed_modularity-$$compilation_name.pl");
$writable_overlay->redirect_write($candidate);
$managed_file->set($candidate);
eval {
if ($managed_file->needs_update)
{
$this->_managed_modularity($managed_file);
}
$managed_file->require($this);
return(IS_TRUE);
} or $translated_errors->escalate(
'modularity_failed',
[$managed_file->name->value],
$EVAL_ERROR);
}
return;
}
# =--------------------------------------------------------------------------= #
return(PERL_FILE_LOADED);
}
# //revision_control
# version 1.1.270
# branch main
# maturity alpha
# /license MPL-2.0 (Mozilla Public License v2.0)
# /copyright "(C) 2009-2014 Winfried Trümper <win@carrot-programming.org>"
( run in 0.502 second using v1.01-cache-2.11-cpan-5b529ec07f3 )