my $config = $self->resolve( service => 'config' );
+ # don't force default_component to be undef if the config wasn't set
+ my @default_view = $config->{default_view}
+ ? ( default_component => $config->{default_view} )
+ : ( )
+ ;
+ my @default_model = $config->{default_model}
+ ? ( default_component => $config->{default_model} )
+ : ( )
+ ;
+
$self->add_sub_container(
$self->build_component_subcontainer
);
);
$self->add_sub_container(
- $self->build_view_subcontainer(
- default_component => $config->{default_view},
- )
+ $self->build_view_subcontainer( @default_view )
);
$self->add_sub_container(
- $self->build_model_subcontainer(
- default_component => $config->{default_model},
- )
+ $self->build_model_subcontainer( @default_model )
);
}
unless $comps{$component};
}
}
-
- $self->get_sub_container('model')->make_single_default;
- $self->get_sub_container('view')->make_single_default;
}
sub _fix_syntax {
}
# one last search for things like $c->comp(qr/::M::/)
- @result = $self->find_component_regexp(
+ @result = $self->_find_component_regexp(
$component, @args
) if !@result and ref $component;
return @result;
}
-sub find_component_regexp {
+sub _find_component_regexp {
my ( $self, $component, @args ) = @_;
my @result;
my @parts = split /::/, $component;
- while (my $type = shift @parts) {
+ while (scalar @parts > 1) {
+ my $type = shift @parts;
+
return ('controller', join '::', @parts)
if $type =~ /^(c|controller)$/i;
$name is a regexp, it returns an array of matching components. Otherwise, it
looks for the component with name $name.
-=head2 get_components_names_types
-
-Gets all components from all containers and returns them as an array of
-arrayrefs containing the component name and the component type (i.e., whether
-it's an instance or a class).
-
=head2 get_all_components
Fetches all the components, in each of the sub_containers model, view and
Searches for components in all containers. If $component is the full class
name, the subcontainer is guessed, and it gets the searched component in there.
Otherwise, it looks for a component with that name in all subcontainers. If
-$component is a regexp, it calls the method below, find_component_regexp,
-and matches all components against that regexp.
-
-=head2 find_component_regexp
-
-Finds components that match a given regexp. Used internally, by find_component.
+$component is a regexp it calls _find_component_regexp and matches all
+components against that regexp.
=head2 expand_component_module