読者です 読者をやめる 読者になる 読者になる

weblog of key_amb

主にIT関連の技術メモ

(メモ) Pod::Simple::HTML による Perl ドキュメントのカスタム生成

Pod::Simple::HTML の POD に書いてある通りですが、Pod::Simple::HTML を継承したクラスを作って、生成する HTML をカスタマイズすることができます。

例えば、do_pod_link メソッドをオーバーライドすることで、L<...> で記述するリンクタグの挙動を変更できます。

package My::PodParser;

use parent 'Pod::Simple::HTML';

# override parent method
sub do_pod_link {
    my ($self, $link) = @_;

    # Links local to our web site
    if ($link->tagname eq 'L' and $link->attr('type') eq 'pod') {
      my $to = $link->attr('to');
      if ($to =~ /^My::/) {
          $to =~ s{::}{/}g;
          return "/docs/My/$to.html";
      }
    }

    # All other links are generated by the parent class
    my $ret = $self->SUPER::do_pod_link($link);
    return $ret;
}

上のように書くと、"My::" で始まるモジュールのリンク先は /docs/My/....html となるので、ドキュメントをホスティングしているサイト上で適切に配置しておけば、独自モジュールのドキュメントでも相互にリンクさせることができます。

DarkPAN( *1,*2 ) などのドキュメントを運用する際に使えそうです。

参考