cpython/Doc/node2label.pl

40 lines
962 B
Perl
Raw Normal View History

#!/depot/gnu/plat/bin/perl -i
# read the labels, then reverse the mappings
require "labels.pl";
%nodes = ();
# sort so that we get a consistent assignment for nodes with multiple labels
foreach $label (sort keys %external_labels) {
$nodes{$external_labels{$label}} = $label;
}
# collect labels that have been used
%newnames = ();
while (<>) {
# don't want to do one s/// per line per node
# so look for lines with hrefs, then do s/// on nodes present
if (/HREF=\"([^\#\"]*)html[\#\"]/) {
@parts = split(/HREF\=\"/);
shift @parts;
for $node (@parts) {
$node =~ s/[\#\"].*$//g;
chop($node);
if (defined($nodes{$node})) {
$label = $nodes{$node};
if (s/HREF=\"$node([\#\"])/HREF=\"$label.html$1/g) {
s/HREF=\"$label.html#SECTION\d+/HREF=\"$label.html/g;
$newnames{$node} = "$label.html";
}
}
}
}
print;
}
foreach $oldname (keys %newnames) {
# or ln -s
system("mv $oldname $newnames{$oldname}");
}