-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathscantree.pl
130 lines (98 loc) · 2.49 KB
/
scantree.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
use strict;
use warnings;
use PDL::Doc;
use Getopt::Std;
use Config;
use Cwd;
require PDL; # always needed to pick up PDL::VERSION
our $opt_v = 0;
getopts('v');
my $dirarg = shift @ARGV;
my $outdb = shift @ARGV;
my $outindex = shift @ARGV;
unless (defined $dirarg) {
($dirarg = $INC{'PDL.pm'}) =~ s/PDL\.pm$//i;
umask 0022;
print "DIR = $dirarg\n";
}
my @dirs = split /,/,$dirarg;
unless (defined $outdb) {
$outdb = "$dirs[0]/PDL/pdldoc.db";
print "DB = $outdb\n";
}
unlink $outdb if -e $outdb;
my $onldc = PDL::Doc->new;
$onldc->outfile($outdb);
foreach my $dir (@dirs) {
$onldc->scantree($dir."/PDL",$opt_v);
$onldc->scan($dir."/PDL.pm",$opt_v) if (-s $dir."/PDL.pm");
}
print STDERR "saving...\n";
$onldc->savedb();
my @mods = $onldc->search('module:',['Ref'],1);
my @mans = $onldc->search('manual:',['Ref'],1);
my @scripts = $onldc->search('script:',['Ref'],1);
my $outdir = "$dirs[0]/PDL";
# ($outdir = $INC{'PDL.pm'}) =~ s/\.pm$//i;
$outindex="$outdir/Index.pod" unless (defined $outindex);
unlink $outindex if -e $outindex; # Handle read only file
open my $podfh, ">", $outindex or die "couldn't open $outindex: $!";
my $pod;
$pod = <<'EOPOD';
=head1 NAME
PDL::Index - an index of PDL documentation
=head1 DESCRIPTION
A meta document listing the documented PDL modules and
the PDL manual documents
=head1 PDL manuals
EOPOD
$pod =~ s/^ //gm;
print $podfh $pod;
print $podfh "=over 4\n\n";
for (@mans) {
my $ref = $_->[2]->{Ref};
$ref =~ s/Manual:/L<$_->[0]> -/;
print $podfh "=item *\n\n$ref\n\n";
}
$pod = <<'EOPOD';
=back
=head1 PDL scripts
EOPOD
$pod =~ s/^ //gm;
print $podfh $pod;
print $podfh "=over 4\n\n";
for (@scripts) {
my $ref = $_->[2]->{Ref};
$ref =~ s/Script:/L<$_->[0]|PDL::$_->[0]> -/;
print $podfh "=item *\n\n$ref\n\n";
}
$pod = <<'EOPOD';
=back
=head1 PDL modules
EOPOD
$pod =~ s/^ //gm;
print $podfh $pod;
print $podfh "=over 4\n\n";
for (@mods) {
my $ref = $_->[2]->{Ref};
next unless $_->[0] =~ /^PDL/;
if( $_->[0] eq 'PDL'){ # special case needed to find the main PDL.pm file.
$ref =~ s/Module:/L<PDL> -/;
print $podfh "=item *\n\n$ref\n\n";
next;
}
$ref =~ s/Module:/L<$_->[0]> -/;
print $podfh "=item *\n\n$ref\n\n";
}
$pod = <<'EOPOD';
=back
=head1 HISTORY
Automatically generated by scantree.pl for PDL version $PDL::VERSION.
EOPOD
$pod =~ s/^ //gm;
print $podfh $pod;
close $podfh;
#add the newly-created PDL::Index to the doc database
$onldc->scan($outindex,$opt_v) if (-s $outindex);
$onldc->savedb();
1;