📄 cmdoption.pm
字号:
Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'xsdgen'), Class::STL::ClassMembers::DataMember->new(name => 'short_name', default => 'xsd'), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Produce the Pequel XML Schema XSD'); use Class::STL::ClassMembers::Constructor; sub prep { my $self = shift; my $POM = shift; $POM->xsdgen(); }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::Docgen; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'docgen'), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Produce the Pequel User Script Reference document pdf'); use Class::STL::ClassMembers::Constructor; sub exec { my $self = shift; my $POM = shift; $POM->docgen(); }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::Catgen; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'catgen'), Class::STL::ClassMembers::DataMember->new(name => 'short_name', default => 'catalogue'), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Produce the Pequel Type Catalogue pdf'); use Class::STL::ClassMembers::Constructor; sub exec { my $self = shift; my $POM = shift; $POM->catgen(); }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::ViewCode; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'view_code'), Class::STL::ClassMembers::DataMember->new(name => 'short_name', default => 'viewcode'), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Display the generated program'); use Class::STL::ClassMembers::Constructor; sub prep { my $self = shift; my $POM = shift; my $getopt = ETL::Pequel3::GetOpt->new(); $getopt->user()->push_back(ETL::Pequel3::Type::CmdOption::NoExec->new()) unless ($getopt->user()->exists('noexec')); } sub exec { my $self = shift; my $POM = shift; $POM->display_code(); }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::Silent; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'silent'), Class::STL::ClassMembers::DataMember->new(name => 'short_name', default => 's'), Class::STL::ClassMembers::DataMember->new(name => 'prop_name', default => 'silent'), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'user_option', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Suppress all process messages'); use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::Verbose; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'verbose'), Class::STL::ClassMembers::DataMember->new(name => 'prop_name', default => 'verbose'), Class::STL::ClassMembers::DataMember->new(name => 'default', default => ''), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 0), Class::STL::ClassMembers::DataMember->new(name => 'user_option', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Display progress information'); use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::DumpCode; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'dump_code'), Class::STL::ClassMembers::DataMember->new(name => 'short_name', default => 'dumpcode'), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 0), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Save the generated program in external file'); use Class::STL::ClassMembers::Constructor; sub exec { my $self = shift; my $POM = shift; $POM->dump_code($self->data()); }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::DumpHash; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'dump_hash'), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 0), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Save a hash dump of the Pequel-Object-Model in external file'); use Class::STL::ClassMembers::Constructor; sub exec { my $self = shift; my $POM = shift; $POM->to_hash($self->data()); }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::ScriptFilename; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'script_filename'), Class::STL::ClassMembers::DataMember->new(name => 'short_name', default => 'f'), Class::STL::ClassMembers::DataMember->new(name => 'default', default => ''), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 0), Class::STL::ClassMembers::DataMember->new(name => 'user_option', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Specify the pequel script xml or dump filename to execute'); use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::NoExec; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'no_exec'), Class::STL::ClassMembers::DataMember->new(name => 'short_name', default => 'noexec'), Class::STL::ClassMembers::DataMember->new(name => 'default', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 0), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Do no execute the generated program'); use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::Usage; use base qw(ETL::Pequel3::Type::CmdOption::Abstract); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'long_name', default => 'usage'), Class::STL::ClassMembers::DataMember->new(name => 'short_name', default => 'help'), Class::STL::ClassMembers::DataMember->new(name => 'flag', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'user_option', default => 1), Class::STL::ClassMembers::DataMember->new(name => 'description', default => 'Display pequel3 command-line usage information'); use Class::STL::ClassMembers::Constructor; sub prep { my $self = shift; my $POM = shift; print STDERR "Pequel3 @{[ $POM->properties()->version() ]} Usage:\n"; foreach ($POM->catalogue()->options()->to_array()) { print STDERR sprintf("%-30s -- %s", "-@{[ $_->long_name() ]}@{[ defined($_->short_name()) ? (' | -' . $_->short_name()) : '' ]}", "@{[ $_->description() ]}\n"); } }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::Catalogue::Abstract; use base qw(ETL::Pequel3::Type::Catalogue); use Class::STL::ClassMembers Class::STL::ClassMembers::DataMember->new(name => 'catalogue_name', default => 'options'), Class::STL::ClassMembers::DataMember->new(name => 'target_mem_name', default => 'long_name|short_name'), Class::STL::ClassMembers::DataMember->new(name => 'element_type', default => 'ETL::Pequel3::Type::CmdOption::Abstract'); use Class::STL::ClassMembers::Constructor; use vars qw( $AUTOLOAD ); sub AUTOLOAD { my $self = shift; (my $option = $AUTOLOAD) =~ s/.*:://; my $p; return $self->err()->user_error(10601, "Unknown option name '$option'!") unless ($p = $self->exists($option)); return $p->data(@_); } sub DESTROY { }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::Catalogue; use base qw(ETL::Pequel3::Type::CmdOption::Catalogue::Abstract); use Class::STL::ClassMembers; use Class::STL::ClassMembers::SingletonConstructor; sub new_extra { my $self = shift; $self->push_back( ETL::Pequel3::Type::CmdOption::Diag->new(), ETL::Pequel3::Type::CmdOption::DiagLevel->new(), ETL::Pequel3::Type::CmdOption::TraceDir->new(), ETL::Pequel3::Type::CmdOption::TraceFile->new(), ETL::Pequel3::Type::CmdOption::Trace->new(), ETL::Pequel3::Type::CmdOption::Usage->new(), ETL::Pequel3::Type::CmdOption::Version->new(), ETL::Pequel3::Type::CmdOption::Prefix->new(), ETL::Pequel3::Type::CmdOption::DumpHash->new(), ETL::Pequel3::Type::CmdOption::DumpCode->new(), ETL::Pequel3::Type::CmdOption::Verbose->new(), ETL::Pequel3::Type::CmdOption::Silent->new(), ETL::Pequel3::Type::CmdOption::ViewCode->new(), ETL::Pequel3::Type::CmdOption::Catgen->new(), ETL::Pequel3::Type::CmdOption::Docgen->new(), ETL::Pequel3::Type::CmdOption::Xsdgen->new(), ETL::Pequel3::Type::CmdOption::Check->new(), ETL::Pequel3::Type::CmdOption::XmlParser->new(), ETL::Pequel3::Type::CmdOption::ExecDir->new(), ETL::Pequel3::Type::CmdOption::ScriptFilename->new(), ETL::Pequel3::Type::CmdOption::NoExec->new(), ); return $self; }}# ----------------------------------------------------------------------------------------------------{ package ETL::Pequel3::Type::CmdOption::Catalogue::User; use base qw(ETL::Pequel3::Type::CmdOption::Catalogue::Abstract); use Class::STL::ClassMembers; use Class::STL::ClassMembers::Constructor;}# ----------------------------------------------------------------------------------------------------1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -