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