Carrot

 view release on metacpan or  search on metacpan

lib/Carrot/Meta/Greenhouse/Dot_Ini/Startup.pm  view on Meta::CPAN

package Carrot::Meta::Greenhouse::Dot_Ini::Startup
# /type class
# /attribute_type ::One_Anonymous::Scalar
# /capability "Initial processing of .ini files"
{
	use strict;
	use warnings 'FATAL' => 'all';

	BEGIN {
		require('Carrot/Meta/Greenhouse/Dot_Ini/Startup./manual_modularity.pl');
	} #BEGIN

	Carrot::Meta::Greenhouse::Package_Loader::provide(
		my $package_name_class = '::Modularity::Package::Name',
		my $file_name_class = '::Personality::Valued::File::Name::Type::Regular::Content::UTF8_wBOM');

	Carrot::Meta::Greenhouse::Package_Loader::provide_instance(
		my $package_resolver = '::Modularity::Package::Resolver');

	# magic place - must be defined before any call to Dot_Ini
	my $sections = {};
	my $dot_ini = Carrot::Meta::Greenhouse::Dot_Ini
		->constructor(__PACKAGE__);
	my $file_names = $dot_ini->site_ini_files('+');
	foreach my $file_name (@$file_names)
	{
		$dot_ini->process_file($file_name);
	}

# =--------------------------------------------------------------------------= #

sub dot_ini_got_section
# /type method
# /effect "Processes a section from an .ini file."
# //parameters
#	name
#	lines
# //returns
{
	my ($this, $name, $lines) = @ARGUMENTS;

	#NOTE: immediate effect for these package hierarchies
	if (($name =~ m{\ACarrot::Meta::Greenhouse::}saa)
	or ($name =~ m{\ACarrot::Modularity::Package::}saa))
	{
		$package_resolver->provide($name); # $name_class afterwards
		my $more_lines = [];
		my $class = $name->value;
		if ($class->can('dot_ini_got_section'))
		{
			$more_lines = $dot_ini->site_ini_files($class);
			@$more_lines = map($_->value, @$more_lines);

		} else {
			$dot_ini->site_ini_lines($class, $more_lines);
		}
		push($lines, @$more_lines);
		my $clone = $dot_ini->sibling_constructor($class);
		$clone->process_section($lines);
		return;
	}

	if (exists($sections->{$name}))
	{
		push($sections->{$name}, $lines);
	} else {
		$sections->{$name} = $lines;
	}
	return;
}

sub config_lines($$)
# /type function
# /effect "Appends previously stored lines from the section of the main .ini"
# //parameters



( run in 0.505 second using v1.01-cache-2.11-cpan-5b529ec07f3 )