관련 메서드의 여러 작은 그룹을 정의하는 일부 무스 클래스가 있습니다. 패키지 POD에서 이러한 그룹을 분명히하고 싶습니다.Pod :: Weaver로 메소드에 여러 하위 섹션을 정의하는 방법은 무엇입니까?
나는 =method
명령에 Dist::Zilla
과 Pod::Weaver
을 사용합니다. 원하는 효과를 내기 위해 =method
명령 사이에 어떤 =head2-like
명령을 삽입 할 수 있습니까?
관련 메서드의 여러 작은 그룹을 정의하는 일부 무스 클래스가 있습니다. 패키지 POD에서 이러한 그룹을 분명히하고 싶습니다.Pod :: Weaver로 메소드에 여러 하위 섹션을 정의하는 방법은 무엇입니까?
나는 =method
명령에 Dist::Zilla
과 Pod::Weaver
을 사용합니다. 원하는 효과를 내기 위해 =method
명령 사이에 어떤 =head2-like
명령을 삽입 할 수 있습니까?
여기에 Redis::Client에 대한 작업을 게시 한 글은 Falling in Love with Pod::Weaver입니다. 그런 다음이
처럼 POD 쓰기[Collect/FOO METHODS]
command = foo_method
[Collect/BAR METHODS]
command = bar_method
[Collect/BAZ METHODS]
command = baz_method
: 할
가장 간단한 것은 당신의 weaver.ini
에 사용자 지정 Collect
지시를 추가하고과 같이, 각 유형에 다른 사용자 정의 POD 명령을 제공하여 방법을 정리하다
=foo_method blah blah
위버는 자동으로 해당 항목을 =head1
으로 수집합니다.
더 복잡한 작업을 원한다면 자신 만의 Pod :: Weaver 플러그인을 작성할 수 있습니다. 요지는 사용자 지정 명령 이름에 대해 구문 분석 된 POD를 검색하고 Pod::Elemental 개체를 반환하여 변환합니다. 여기에 내가 쓴 플러그인입니다 :
package Pod::Weaver::Plugin::RedisLinks;
# ABSTRACT: Add links to Redis documentation
use Moose;
with 'Pod::Weaver::Role::Transformer';
use Data::Dumper;
use Scalar::Util 'blessed';
use aliased 'Pod::Elemental::Element::Pod5::Ordinary';
sub transform_document {
my ($self, $doc) = @_;
my @children = $doc->children;
my @new_children;
foreach my $child(@{ $children[0] }) {
if ($child->can('command')
&& $child->command =~ /^(?:key|str|list|hash|set|zset|conn|serv)_method/) {
my $meth_name = $child->content;
$meth_name =~ s/^\s*?(\S+)\s*$/$1/;
my $cmd_name = uc $meth_name;
$cmd_name =~ tr/_/ /;
my $link_name = $meth_name;
$link_name =~ tr/_/-/;
my $new_para = Ordinary->new(
content => sprintf 'Redis L<%s|%s> command.',
$cmd_name, 'http://redis.io/commands/' . $link_name);
push @new_children, $child, $new_para;
next;
}
push @new_children, $child;
}
$doc->children(\@new_children);
}
__PACKAGE__->meta->make_immutable;
1;
transform_document
방법은 매개 변수로 분석 문서를 전달됩니다. 그런 다음 최상위 명령을 통해 /^(?:key|str|list|hash|set|zset|conn|serv)_method/
레이블이 붙은 요소를 찾고 그 이름을 약간 빗나가고 원하는 형식의 POD 콘텐츠가 포함 된 새로운 POD 단락을 만듭니다.
신속하고 유용한 답변 인 friedo에 감사드립니다. 지금 당장은 첫 번째 접근법이 저에게는 잘 작동하지만 두 번째 접근법의 가능성을 높이 평가합니다. –
문제 없음 - 위버를 즐기십시오. 정말 멋진 도구입니다. – friedo