use PDL::Doc;
use PDL::Doc::Perldl;
# @dontmod = qw/ PDL::Graphics::TriD::Tk /;
%Category = (
IO => '^PDL::IO',
Graphics => '^PDL::Graphics',
Core => '^PDL::Core|
^PDL::Primitive|
^PDL::Slices|
^PDL::Math|
^PDL::Basic',
Lib => '^PDL::Image
|^PDL::Slatec
|^PDL::FFT
|^PDL::Filter
|^PDL::Fit
|^PDL::Gaussian
|^PDL::GSL',
Dev => '^PDL::Types
|^PDL::Dbg
|^PDL::Options
|^PDL::Autoloader
|^PDL::Callext
|^PDL::Doc::Perldl',
Derived => '^PDL::Complex
|^PDL::Char
|^PDL::Func',
);
sub nofunc {
my ($func,$hash) = @_;
if ($func =~ /AUTOLOAD
|MainLoop
/xs ||
$hash->{Ref} =~ /^internal$/)
{ print STDERR "skipping $func\n"; return 1 } else { return 0 }
}
# a very simple script to generate a huge manpage of all documented
# PDL functions
# mainly to demonstrate what we can do with the new doc format
print << 'EOD';
=head1 NAME
pdlfunc - Functions in the PDL distribution
=head1 DESCRIPTION
This is a listing of all documented functions in the PDL distribution.
=head2 Alphabetical Listing of PDL Functions
=over 8
EOD
$onldc = $PDL::onlinedoc; # new PDL::Doc ('/tmp/pdlhash.dbtxt');
$db = $onldc->ensuredb;
while (my ($key,$val) = each %$db) {
my $strip = $key;
$strip =~ s/PDL.*::(.*)$/$1/;
$val->{Stripped} = $strip;
}
@match = $onldc->search('.*',['Name'],1);
@match = sort {lc $a->[1]->{Stripped} cmp lc $b->[1]->{Stripped}} @match;
for (@match) {
next if $_->[1]->{Ref} =~ /(Module|Manual):/ ||
nofunc $_->[1]->{Stripped}, $_->[1];
$sh = new StrHandle;
print STDERR "function $_->[0] ($_->[1]->{Stripped})\n";
$onldc->funcdocs($_->[0],$sh);
$mod = "\n\nModule: $_->[1]->{Module}\n\n";
$stripped = $_->[1]->{Stripped};
$txt = $sh->text;
$txt =~ s/=head2 (.*)$/=item $stripped$mod/mg;
$txt =~ s/^=cut\s*$//mg;
$txt =~ s/^=for.*$//mg;
$txt =~ s/Docs from .*$//mg;
print $txt;
}
print <<'EOD';
=back
EOD