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

📄 catgen.pm

📁 普通的ETL工具
💻 PM
📖 第 1 页 / 共 3 页
字号:
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::Aggregate; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'aggregate');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach ($self->catalogue()->aggregates()->to_array()) 
		{
			$self->user_prog()->head2($_->name());
			$self->user_prog()->code($_->description());
			$self->user_prog()->code(); #? if ($self->doc_ref()->target_fmt() ne 'pdf');
			# Pequel XSD Schema:
			if ($self->doc_ref()->show_xsd()) {
				my $xsd = $self->catalogue()->xml_schemas()->exists($self->properties()->xml_schema())
					->new(POM => $self->POM());
				$_->xml_schema($xsd, $xsd->schema_root());
				$self->user_prog()->code("F<pequel xsd extract>");
				$self->user_prog()->code() if ($self->doc_ref()->target_fmt() ne 'pdf');
				$self->user_prog()->begin();
				$self->user_prog()->code(' ' . $xsd->to_string());
				$self->user_prog()->end();
			}
		}
		$self->user_prog()->code();
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::Table; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'table');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach (reverse $self->catalogue()->table_types()->to_array()) 
		{
			$self->user_prog()->head2($_->name());
			$self->user_prog()->code($_->description());
			$self->user_prog()->code(); #? if ($self->doc_ref()->target_fmt() ne 'pdf');
			# Pequel XSD Schema:
			if ($self->doc_ref()->show_xsd()) {
				my $xsd = $self->catalogue()->xml_schemas()->exists($self->properties()->xml_schema())
					->new(POM => $self->POM());
				$_->xml_schema($xsd, $xsd->schema_root());
				$self->user_prog()->code("F<pequel xsd extract>");
				$self->user_prog()->code() if ($self->doc_ref()->target_fmt() ne 'pdf');
				$self->user_prog()->begin();
				$self->user_prog()->code(' ' . $xsd->to_string());
				$self->user_prog()->end();
			}
		}
		$self->user_prog()->code();
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::Macro; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers qw( macro_category ),
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'macro');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach (grep($_->category() eq $self->macro_category(), $self->catalogue()->macros()->to_array()))
		{
			$self->user_prog()->code("I<@{[ $_->usage() ]}>");
			$self->user_prog()->code();
		}
		$self->user_prog()->code();
		$self->user_prog()->code();
		foreach (grep($_->category() eq $self->macro_category(), $self->catalogue()->macros()->to_array()))
		{
			$self->user_prog()->head2($_->name());
			$self->user_prog()->code();
			if (defined($_->usage())) {
				$self->user_prog()->code("B<@{[ $_->usage() ]}>");
				$self->user_prog()->code();
			}
			$self->user_prog()->code("@{[ $_->description() ]}") if (defined($_->description()));
			$self->user_prog()->code();
			$self->user_prog()->code() if ($self->doc_ref()->target_fmt() ne 'pdf');
		}
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::PequelType; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'pequel_type');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach ($self->catalogue()->pequel_types()->to_array())
		{
			$self->user_prog()->head2($_->name());
			$self->user_prog()->code("I<@{[ $_->description() ]}>");
			$self->user_prog()->code();
			$self->user_prog()->code() if ($self->doc_ref()->target_fmt() ne 'pdf');
			foreach my $k (sort keys %{$_->members()}) 
			{
				next if ($k =~ /^(data|description|name|data_type)$/);
				my $attr = ${$_->members()}{$k};
				$self->user_prog()->code("B<@{[ $k ]}>");
				$self->user_prog()->code();
				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();
				}
				if ($k eq 'validate_catalogue' && defined($_->validate_catalogue()))
				{ 
					my $n = $self->POM()->catalogue->exists(${$attr}[0])->target_mem_name();
					$self->user_prog()->code("-- validate: I<@{[ ${$attr}[0] ]}>");
					$self->user_prog()->over();
					my $names='';
					my $pipe='';
					foreach ($self->POM()->catalogue->exists(${$attr}[0])->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();
				}	
			}
			$self->user_prog()->code();
		}
		$self->user_prog()->code();
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::DateType; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'date_type');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach ($self->catalogue()->date_types()->to_array())
		{
			$self->user_prog()->head2($_->name());
			$self->user_prog()->code();
			$self->user_prog()->code() if ($self->doc_ref()->target_fmt() ne 'pdf');
			if (defined($_->regex())) {
				$self->user_prog()->code("-- regex: B<@{[ $_->regex() ]}>");
				$self->user_prog()->code();
			}
			if (defined($_->delimiter())) {
				$self->user_prog()->code("-- delimiter: B<@{[ $_->delimiter() ]}>");
				$self->user_prog()->code();
			}
			$self->user_prog()->code("-- d.pos: B<@{[ $_->d()->pos() ]}>;  d.len: B<@{[ $_->d()->len() ]}>");
			$self->user_prog()->code();
			$self->user_prog()->code("-- m.pos: B<@{[ $_->m()->pos() ]}>;  m.len: B<@{[ $_->m()->len() ]}>");
			$self->user_prog()->code();
			$self->user_prog()->code("-- y.pos: B<@{[ $_->y()->pos() ]}>;  y.len: B<@{[ $_->y()->len() ]}>");
			$self->user_prog()->code();
		}
		$self->user_prog()->code();
	}
}
# ----------------------------------------------------------------------------------------------------
{
	package ETL::Pequel3::CatGen::Chapter::InputDataset; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'input_dataset');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach ($self->catalogue()->input_datasets()->to_array())
		{
			$self->user_prog()->head2($_->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::OutputDataset; 
	use base qw(ETL::Pequel3::Type::Document::Chapter::Abstract);
	use Class::STL::ClassMembers
		Class::STL::ClassMembers::DataMember->new(name => 'chapter_name', default => 'output_dataset');
	use Class::STL::ClassMembers::Constructor; 
	sub prepare
	{
		my $self = shift;
		foreach ($self->catalogue()->output_datasets()->to_array())
		{
			$self->user_prog()->head2($_->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();
	}

⌨️ 快捷键说明

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