Acme-Chef
view release on metacpan or search on metacpan
lib/Acme/Chef.pm view on Meta::CPAN
bless $self => $class;
my @paragraphs = $self->_get_paragraphs( $code );
my @recipes = $self->_paragraphsToRecipes(\@paragraphs);
$_->compile() foreach @recipes;
$self->{start_recipe} = $recipes[0]->recipe_name();
$self->{recipes} = {
map { ($_->recipe_name(), $_) } @recipes
};
return $self;
}
=item execute
Takes no arguments. Runs the program and returns its output.
lib/Acme/Chef/Container.pm view on Meta::CPAN
=cut
sub new {
my $proto = shift;
my $class = ref $proto || $proto;
my $self = {};
if (ref $proto) {
%$self = %$proto;
$self->{contents} = [ map { $_->new() } @{$self -> {contents}} ];
}
%$self = (
contents => [],
%$self,
@_,
);
return bless $self => $class;
}
lib/Acme/Chef/Recipe.pm view on Meta::CPAN
sub new {
my $proto = shift;
my $class = ref $proto || $proto;
my $self = {};
if (ref $proto) {
%$self = %$proto;
$self->{bowls} = [ map { $_->new() } @{$self -> {bowls }} ];
$self->{dishes} = [ map { $_->new() } @{$self -> {dishes}} ];
$self->{loops} = { map { ( $_, $self->{loops}{$_} ) }
keys %{$self->{loops}} };
if ( $self->{compiled} ) {
$self->{ingredients} = { map {
(
$_,
$self -> {ingredients} -> {$_} -> new()
)
} keys %{ $self->{ingredients} }
};
}
}
my %args = @_;
( run in 0.255 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )