summaryrefslogtreecommitdiffstats
path: root/lib/Bread/Board/Declare.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Bread/Board/Declare.pm')
-rw-r--r--lib/Bread/Board/Declare.pm29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/Bread/Board/Declare.pm b/lib/Bread/Board/Declare.pm
index 404a427..3f5dff5 100644
--- a/lib/Bread/Board/Declare.pm
+++ b/lib/Bread/Board/Declare.pm
@@ -117,6 +117,7 @@ become services, as in:
=cut
my (undef, undef, $init_meta) = Moose::Exporter->build_import_methods(
+ as_is => ['dep'],
install => ['import', 'unimport'],
class_metaroles => {
attribute => ['Bread::Board::Declare::Meta::Role::Attribute'],
@@ -145,6 +146,34 @@ sub init_meta {
$package->$init_meta(%options);
}
+sub dep {
+ if (@_ > 1) {
+ my %opts = (
+ name => '__ANON__',
+ @_,
+ );
+
+ if (exists $opts{dependencies}) {
+ confess("Dependencies are not supported for inline services");
+ }
+
+ if (exists $opts{value}) {
+ return Bread::Board::Literal->new(%opts);
+ }
+ elsif (exists $opts{block}) {
+ return Bread::Board::BlockInjection->new(%opts);
+ }
+ elsif (exists $opts{class}) {
+ return Bread::Board::ConstructorInjection->new(%opts);
+ }
+ else {
+ }
+ }
+ else {
+ return Bread::Board::Dependency->new(service_path => $_[0]);
+ }
+}
+
=head1 BUGS
No known bugs.