adding draft of pod index generator based on zby script
Brandon L. Black [Tue, 8 Aug 2006 13:53:55 +0000 (13:53 +0000)]
maint/gen-pod-index.pl [new file with mode: 0755]

diff --git a/maint/gen-pod-index.pl b/maint/gen-pod-index.pl
new file mode 100755 (executable)
index 0000000..9d2fbe6
--- /dev/null
@@ -0,0 +1,64 @@
+#!/usr/bin/perl -w
+
+# Originally by: Zbigniew Lukasiak, C<zz bb yy@gmail.com>
+#  but refactored and modified to our nefarious purposes
+
+# XXX I'm not done refactoring this yet --blblack
+
+use strict;
+use warnings;
+
+use Pod::Coverage;
+use Data::Dumper;
+use File::Find::Rule;
+use File::Slurp;
+use Path::Class;
+use Template;
+
+# Convert filename to package name
+sub getpac {
+    my $file = shift;
+    my $filecont = read_file( $file );
+    $filecont =~ /package\s*(.*?);/s or return;
+    my $pac = $1;
+    $pac =~ /\s+(.*)$/;
+    return $1;
+}
+
+my @files = File::Find::Rule->file()->name('*.pm', '*.pod')->in('lib');
+
+my %docsyms;
+for my $file (@files){
+    my $package = getpac( $file ) or next;
+    my $pc = Pod::Coverage->new(package => $package);
+    my %allsyms = map {$_ => 1} $pc->_get_syms($package);
+    my $podarr = $pc->_get_pods();
+    next if !$podarr;
+    for my $sym (@{$podarr}){
+        $docsyms{$sym}{$package} = $file if $allsyms{$sym};
+    }
+}
+
+my @lines;
+for my $sym (sort keys %docsyms){
+    for my $pac (sort keys %{$docsyms{$sym}}){
+        push @lines, {symbol => $sym, package => $pac};
+    }
+}
+
+my $tt = Template->new({})
+|| die Template->error(), "\n";
+
+$tt->process(\*DATA, { lines => \@lines })
+|| die $tt->error(), "\n";
+
+
+__DATA__
+
+=head1 NAME
+
+Method Index
+
+[% FOR line = lines %]
+L<[% line.symbol %] ([% line.package %])|[% line.package %]/[% line.symbol %]>
+[% END %]