Carrot

 view release on metacpan or  search on metacpan

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

package Carrot::Meta::Greenhouse::Dot_Ini
# /type class
# /attribute_type ::Many_Declared::Ordered
# /capability "Processing of .ini files (global and package-specific)"
{
	use strict;
	use warnings 'FATAL' => 'all';

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

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

	$package_resolver->provide(
		my $package_name_class = '::Modularity::Package::Name',
		my $file_name_class = '::Personality::Valued::File::Name::Type::Regular::Content::UTF8_wBOM',
		my $directory_name_class = '::Personality::Valued::File::Name::Type::Directory',
		my $line_class = 'Carrot::Meta::Greenhouse::Dot_Ini::Line',
		my $cursor_class = '::Personality::Reflective::Iterate::Array::Cursor');

	$package_resolver->provide_instance(
		my $pkg_patterns = '::Modularity::Package::Patterns',
		my $compilation_name = '::Meta::Greenhouse::Compilation_Name',
		my $translated_errors = '::Meta::Greenhouse::Translated_Errors',
		my $application_directories = '::Meta::Greenhouse::Application_Directories',
		my $passage_counter = '::Meta::Greenhouse::Passage_Counter',
		my $search_path = '::Personality::Valued::File::Name::Type::Directory::Search_Path');


	require Carrot::Meta::Greenhouse::Site_Directories;
	my $site_directories = Carrot::Meta::Greenhouse::Site_Directories->constructor;

	my $candidates = $site_directories->subdirectories('configuration');
	foreach my $cfg_dir (@$candidates)
	{
		my $cfg_directory = $directory_name_class
			->indirect_constructor($cfg_dir);
#		$cfg_directory->canonify;
		$search_path->append_if_distinct($cfg_directory);
	}

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

sub attribute_construction
# /type method
# /effect "Constructs the attribute(s) of a newly created instance."
# //parameters
#	subject
# //returns
{
	my ($this, $subject) = @ARGUMENTS;

	unless (defined($subject))
	{
		my $caller = [caller];
		$subject = $caller->[RDX_CALLER_PACKAGE];
	}
	$this->[ATR_SUBJECT] = $subject;

	return;
}

sub search_path
# /type function
# /effect "Returns the search path for .ini files"
# //parameters
# //returns
#	::Personality::Valued::File::Name::Type::Directory::Search_Path
{
	return($search_path);
}

sub find_configuration
# /type method
# /effect "Merges and processes lines from different sources"
# //parameters



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