📄 catgen.pm
字号:
}
# ----------------------------------------------------------------------------------------------------
{
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 + -