⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 catgen.pm

📁 普通的ETL工具
💻 PM
📖 第 1 页 / 共 3 页
字号:
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::InputDatasource; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'input_datasource');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach ($self->catalogue()->input_datasources()->to_array())
		{
			$self->user_prog()->head2($_->datasource_name());
			if (defined($_->description()) && $_->description() ne '') {
				$self->user_prog()->code($_->description());
				$self->user_prog()->code();
				$self->user_prog()->code();
			}
			foreach my $k (sort keys %{$_->members()}) 
			{
				my $attr = ${$_->members()}{$k};
				next unless UNIVERSAL::isa(${$attr}[2], 'ETL::Pequel3::Type::DataMember::User');
				$self->user_prog()->code("B<@{[ $k ]}>");
				$self->user_prog()->code() if ($self->doc_ref()->target_fmt() ne 'pdf');
				$self->user_prog()->over();
				if (${$attr}[0] ne '') {
					$self->user_prog()->code("-- default: B<@{[ ${$attr}[0] ]}>");
					$self->user_prog()->code();
				}
				if (${$attr}[1] ne '') {
					$self->user_prog()->code("-- validate: B<@{[ ${$attr}[1] ]}>");
					$self->user_prog()->code();
				}
				$self->user_prog()->back();
			}
			$self->user_prog()->code();
		}
		$self->user_prog()->code();
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::OutputDatasource; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'output_datasource');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach ($self->catalogue()->output_datasources()->to_array())
		{
			$self->user_prog()->head2($_->datasource_name());
			if (defined($_->description()) && $_->description() ne '') {
				$self->user_prog()->code($_->description());
				$self->user_prog()->code();
				$self->user_prog()->code();
			}
			foreach my $k (sort keys %{$_->members()}) 
			{
				my $attr = ${$_->members()}{$k};
				next unless UNIVERSAL::isa(${$attr}[2], 'ETL::Pequel3::Type::DataMember::User');
				$self->user_prog()->code("B<@{[ $k ]}>");
				$self->user_prog()->code() if ($self->doc_ref()->target_fmt() ne 'pdf');
				$self->user_prog()->over();
				if (${$attr}[0] ne '') {
					$self->user_prog()->code("-- default: B<@{[ ${$attr}[0] ]}>");
					$self->user_prog()->code();
				}
				if (${$attr}[1] ne '') {
					$self->user_prog()->code("-- validate: B<@{[ ${$attr}[1] ]}>");
					$self->user_prog()->code();
				}
				$self->user_prog()->back();
			}
			$self->user_prog()->code();
		}
		$self->user_prog()->code();
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::Property; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'configuration_property');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach (grep($_->isa('ETL::Pequel3::Type::Properties::Configuration::Abstract'), 
				$self->catalogue()->properties()->to_array()))
		{
			$self->user_prog()->head2($_->name());
			if (defined($_->description())) {
				$self->user_prog()->code("I<@{[ $_->description() ]}>");
				$self->user_prog()->code();
			}
			if (defined($_->default())) {
				$self->user_prog()->code("-- default: B<@{[ $_->default() ]}>");
				$self->user_prog()->code();
			}
			if (defined($_->validate())) {
				$self->user_prog()->code("-- validate: B<@{[ $_->validate() ]}>");
				$self->user_prog()->code();
			}
			if (defined($_->validate_catalogue()))
			{ 
				my $n = $self->POM()->catalogue->exists($_->validate_catalogue())->target_mem_name();
				$self->user_prog()->code("-- validate: I<@{[ $_->validate_catalogue() ]}>");
				$self->user_prog()->over();
				my $names='';
				my $pipe='';
				foreach ($self->POM()->catalogue->exists($_->validate_catalogue())->to_array())
				{
					$names .= ($pipe . $_->$n());
					$pipe=' | ';
					if (length($names) >= 60) {
						$self->user_prog()->code("B<@{[ $names ]}>");
						$names='';
						$pipe='| ';
					}
				}
				$self->user_prog()->code("B<@{[ $names ]}>") if (length($names));
				$self->user_prog()->back();
			}	
			if (defined($_->global()) && $_->global() != 0) {
				$self->user_prog()->code("-- global");
				$self->user_prog()->code();
			}
		}
		$self->user_prog()->code();
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::CmdOption; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'command_line_option');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach ($self->catalogue()->options()->to_array())
		{
			$self->user_prog()->head2("--@{[ $_->long_name() ]}");
			if (defined($_->description())) {
				$self->user_prog()->code("I<@{[ $_->description() ]}>");
				$self->user_prog()->code();
			}
			if (defined($_->short_name())) {
				$self->user_prog()->code("-- short name: B<--@{[ $_->short_name() ]}>");
				$self->user_prog()->code();
			}
			if (defined($_->default())) {
				$self->user_prog()->code("-- default: B<@{[ $_->default() ]}>");
				$self->user_prog()->code();
			}
			if (defined($_->flag())) {
				$self->user_prog()->code("-- flag: B<@{[ $_->flag() ? 'YES' : 'NO' ]}>");
				$self->user_prog()->code();
			}
			if (defined($_->prop_name())) {
				$self->user_prog()->code("-- property name: B<@{[ $_->prop_name() ]}>");
				$self->user_prog()->code();
			}
		}
		$self->user_prog()->code();
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::Document; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'document');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::DocChapter; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'document_chapter');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::Generator; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'generator');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::Segment; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'generator_segment');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
	}
}
# ----------------------------------------------------------------------------------------------------
# CHAPTER TYPE CATALOGUE
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::Catalogue;
	use base qw(ETL::Pequel3::Type::Catalogue);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'cat_chapters'),
		Class::STL::ClassMembers::DataMember->new(name => 'target_mem_name', default => 'chapter_name'),
		Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::Document::Chapter::Abstract');
	use Class::STL::ClassMembers::SingletonConstructor;
	sub new_extra
	{
		my $self = shift;
		$self->push_back(
			ETL::Pequel3::CatGen::Chapter::Section->_new(),
			ETL::Pequel3::CatGen::Chapter::Aggregate->_new(),
			ETL::Pequel3::CatGen::Chapter::Macro->_new(),
			ETL::Pequel3::CatGen::Chapter::PequelType->_new(),
			ETL::Pequel3::CatGen::Chapter::DateType->_new(),
			ETL::Pequel3::CatGen::Chapter::Table->_new(),
			ETL::Pequel3::CatGen::Chapter::InputDataset->_new(),
			ETL::Pequel3::CatGen::Chapter::OutputDataset->_new(),
			ETL::Pequel3::CatGen::Chapter::InputDatasource->_new(),
			ETL::Pequel3::CatGen::Chapter::OutputDatasource->_new(),
			ETL::Pequel3::CatGen::Chapter::Property->_new(),
			ETL::Pequel3::CatGen::Chapter::CmdOption->_new(),
			ETL::Pequel3::CatGen::Chapter::Document->_new(),
			ETL::Pequel3::CatGen::Chapter::DocChapter->_new(),
			ETL::Pequel3::CatGen::Chapter::Generator->_new(),
			ETL::Pequel3::CatGen::Chapter::Segment->_new(),
#>			ETL::Pequel3::CatGen::Chapter::UserExtension->_new(), # list all extenstions
		);
		return $self;
	}
}
# ----------------------------------------------------------------------------------------------------
1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -