Acme-Parataxis
view release on metacpan or search on metacpan
builder/Acme/Parataxis/Builder.pm view on Meta::CPAN
require CPAN::Requirements::Dynamic;
my $dynamic_parser = CPAN::Requirements::Dynamic->new();
my $prereq = $dynamic_parser->evaluate($dynamic);
$meta{prereqs} = $meta->effective_prereqs->with_merged_prereqs($prereq)->as_string_hash;
$meta = CPAN::Meta->new( \%meta );
}
$meta->save(@$_) for ['MYMETA.json'];
}
sub find ( $pattern, $base ) {
$base = path($base) unless builtin::blessed $base;
my $blah = $base->visit(
sub ( $path, $state ) {
$state->{$path} = $path if -f $path && $path =~ $pattern;
#~ return \0 if keys %$state == 10;
},
{ recurse => 1 }
);
values %$blah;
}
lib/Acme/Parataxis.pm view on Meta::CPAN
sub fiber : prototype(&) ($code) { spawn( 'Acme::Parataxis', $code ) }
sub async : prototype(&) ($code) {
my $ret = run($code);
stop();
return $ret;
}
sub await {
my $thing = shift;
if ( builtin::blessed($thing) ) {
return $thing->await if $thing->can('await');
return $thing->wait if $thing->can('wait');
}
croak 'await() requires a Future or Fiber object';
}
sub yield {
my $invocant = shift;
if ( !defined $invocant || ( ( ref $invocant || $invocant ) ne 'Acme::Parataxis' && !eval { $invocant->isa('Acme::Parataxis') } ) ) {
unshift @_, $invocant if defined $invocant;
t/007_data_types.t view on Meta::CPAN
is $yielded->{status}, 'waiting', 'Yielded HASH correctly';
diag 'Resuming fiber with an array ref...';
my $final = $fiber->call( [ 'A', 'B' ] );
is $final->{received}, [ 'A', 'B' ], 'Final return contains the resumed data';
};
our $DESTROYED = 0;
{
package Local::Destructor {
use Test2::V1 qw[diag];
sub new { bless { name => pop @_ }, $_[0] }
sub DESTROY ( $self, @ ) {
diag 'Destroy ' . $self->{name};
$main::DESTROYED++;
}
}
}
subtest 'Objects with Destructors' => sub {
$DESTROYED = 0;
subtest 'Passing object into fiber' => sub {
( run in 2.156 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )