Как отсортировать встроенные записи POD документации пакета Perl для IMenu или окончательной документации
Я разрабатываю с Emacs 27 в
cperl-mode
+
PDE
.
Я консолидирую свои пакеты Perl и пытаюсь добавить записи встроенной документации над заголовком метода/подзаголовков. я использую
inline POD schema
, потому что у меня есть и быстрая навигация, и описание кода на месте через файл .
Обычно методы/подпрограммы не упорядочены в алфавитном порядке в исходном коде. Таким образом, записи, происходящие в
Imenu-Tree
в порядке их определения они появляются в порядке развития исходного кода. Теперь я хочу иметь алфавитный порядок, чтобы быстрее находить/переходить к методам/подпрограммам. Я знаю, как создать такой список в оболочке, заказанной или связанной со строкой исходного кода (
grep -n
), но понятия не имею, как принять это в направлении
POD-Tools
или же
Emacs + Imenu + PDE
для встраивания результатов.
Вопрос:
Есть ли
POD
конкретный инструмент или
Imenu
плагин или настройка для сортировки по алфавиту, как в командной строке?
$ grep '=head2 METHOD' AppTK.pm | sort
=head2 METHOD checkDiskSize($path, $formatted) -> ($error, $size, $used, $avail)
=head2 METHOD checkHelpUsage($runDict, $tool, $minArgs, $exit) -> BOOL
=head2 METHOD checkRuntimeSettings ( $self, $cmdDict ) -> ( $output, $exitFun, $cmdFun )
=head2 METHOD getRuntime ($self) -> $runDict
=head2 METHOD getRuntimeValue ( $self, $key ) -> $value|undef
=head2 METHOD getRuntimeValues($self) -> ( $tool, $output, $response, $command, $exitFun, $param )
=head2 METHOD initApplication ( $self, $version, $date, $author, $contact ) -> BOOL
=head2 METHOD initRuntime ( $self, $magic, $tool, $ioType, $param ) -> BOOL
=head2 METHOD ioAddResult ( $self, $dict, $key, $value ) -> dict
=head2 METHOD ioCreateResult ( $self, $name, $type, $data = [] ) -> $dict
=head2 METHOD listPlainToStr ( $self, $list, $sort = 0, $sep=' ', $quote="'") -> Str
=head2 METHOD outEncodeResult ( $self, $indent, $dict )
=head2 METHOD outEofMagic($self) -> BOOL
=head2 METHOD outIoDsLine($self, $ascii = 1) -> 1
=head2 METHOD outIoHeader($self) -> 1
=head2 METHOD outIoHsLine($self, $ascii = 1) -> 1
=head2 METHOD outIoResult($self, $resList, $type, $handle = undef, $fname = undef ) -> 1
=head2 METHOD outIoVersion ( $self, $program, $exit ) -> BOOL
=head2 METHOD outResultDataRecord ( $self, $strIndent, $type, $ident, $values ) -> ($error, $text)
=head2 METHOD outRunEof ( $self, $what = '' ) -> 1
=head2 METHOD outRunHeader ( $self, $what) -> 1
=head2 METHOD outRunMessage ( $self, $what, $aspect, $with = '', $pfxLen = 12 ) -> 1
=head2 METHOD outRunStreamRate( $self, $show,...) -> $lastTime
=head2 METHOD outRunWarning ( $self, $what, $aspect, $with = '', $pfxLen = 12 ) -> 1
=head2 METHOD parseCommandline ( $self, @ ) -> BOOL
=head2 METHOD setRuntimeInteractive ( $self, $cmdDict, $command ) -> BOOL
=head2 METHOD setRuntime ( $self, $cmdDict, $command ) -> BOOL
=head2 METHOD strQuotePlain($self, $item, $quote ="'") -> Str
Факсимиле кода POD
...
# ==================================================================
=pod
=head2 METHOD ioCreateResult ( $self, $name, $type, $data = [] ) -> $dict
Create a new dictionary to write resulting datasets produced tool by
the tool.
=over 4
=item INPUT
$name -- name of the result set,
$type -- DATA.RECORD|DATA.TABLE,
$data -- an optional array reference for
existing data
DEFAULT: []
=item RETURNS
A reference to a dictionary with a well defined structure.
=item TODO
Consider a OO implementation here to be more interaction safe.
=back
=cut
sub ioCreateResult ( $self, $name, $type, $data = [] ) {
my $res = {
NAME => $name,
TYPE => $type,
DATA => $data,
};
return $res;
}
# ==================================================================
=pod
=head2 METHOD ioAddResult ( $self, $dict, $key, $value ) -> dict
Add a key value pair to the existing result set. Internal a
array reference with the structure [ $key, $value ] is used, so
multiple keys with the same names can occur.
=over 4
=item INPUT
$dict -- A dictionary created with
ioCreateResult(...)
$key -- Key of the entry
$value -- of the entry
=item RETURNS
$dict -- the resulting dictionary
=item EXAMPLE
my $out = $tk->ioCreateResult('DEFAULT','DATA.RECORD');
$tk->ioAddResult($out, 'DISK.PATH', $path);
$tk->ioAddResult($out, 'COUNT.FILES', $fcnt);
=back
=cut
sub ioAddResult ( $self, $dict, $key, $value ) {
my $list = $dict->{DATA};
push( @$list, [ $key, $value ] );
return $dict;
}
...