Bolts

 view release on metacpan or  search on metacpan

lib/Bolts.pm  view on Meta::CPAN

                my ($self, $bag, $name, %params) = @_;
                return $def->name->new( 
                    __parent => $bag,
                    %params,
                );
            },
        )
    );
}

sub contains(&;$) {
    my ($parent_meta, $code, $such_that_each) = @_;

    my $meta = _bag_meta($parent_meta);

    return sub {
        my ($name) = shift;

        my $parent = $meta->name;

        my $bag_meta = Bolts::Bag->start_bag(

lib/Bolts.pm  view on Meta::CPAN


        pop @BAG_META;

        $bag_meta->finish_bag;

        return $bag_meta;
    };
}


sub such_that_each($) {
    my ($meta, $params) = @_;
    return $params;
}


sub builder(&) {
    my ($meta, $code) = @_;
    $meta = _bag_meta($meta);

    return {
        blueprint => $meta->acquire('blueprint', 'built_injector', {
            builder => $code,
        }),
    };
}


sub dep($) {
    my ($meta, $path) = @_;
    $meta = _bag_meta($meta);

    $path = [ $path ] unless ref $path eq 'ARRAY';

    my @path = ('__top', @$path);

    return {
        blueprint => $meta->acquire('blueprint', 'acquired', {
            path => \@path,
        }),
    };
}


sub option($) {
    my ($meta, $p) = @_;

    my %bp = %$p;
    my %ip;
    for my $k (qw( isa does )) {
        $ip{$k} = delete $bp{$k} if exists $bp{$k};
    }

    return {
        %ip,
        blueprint => $meta->acquire('blueprint', 'given', \%bp),
    },
}


sub value($) {
    my ($meta, $value) = @_;

    return {
        blueprint => $meta->acquire('blueprint', 'literal', {
            value => $value,
        }),
    };
}


sub self() {
    my ($meta, $value) = @_;

    return {
        blueprint => $meta->acquire('blueprint', 'parent_bag'),
    };
}


1;



( run in 0.536 second using v1.01-cache-2.11-cpan-65fba6d93b7 )