From c513dd3113943da6b6d1b42203d18a2bbb908de1 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 29 Sep 2011 13:12:45 -0500 Subject: allow specifying dependencies inline --- lib/Bread/Board/Declare.pm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'lib/Bread') 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. -- cgit v1.2.3