blob: 5cc54d69bfc814d74d2f45d3e3ed9b1b16380dd7 (
plain)
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
|
#! /usr/bin/env perl
use English;
$INPLACE_EDIT = '';
# read the labels, then reverse the mappings
require "labels.pl";
%nodes = ();
my $key;
# sort so that we get a consistent assignment for nodes with multiple labels
foreach $label (sort keys %external_labels) {
$key = $external_labels{$label};
$key =~ s|^/||;
$nodes{$key} = $label;
}
# This adds the "internal" labels added for indexing. These labels will not
# be used for file names.
require "intlabels.pl";
foreach $label (keys %internal_labels) {
$key = $internal_labels{$label};
$key =~ s|^/||;
if (defined($nodes{$key})) {
$nodes{$label} = $nodes{$key};
}
}
# 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|href)=\"([^\#\"]*)html[\#\"]/) {
@parts = split(/(HREF|href)\=\"/);
shift @parts;
for $node (@parts) {
$node =~ s/[\#\"].*$//g;
chop($node);
if (defined($nodes{$node})) {
$label = $nodes{$node};
if (s/(HREF|href)=\"$node([\#\"])/$1=\"$label.html$2/g) {
s/(HREF|href)=\"$label.html#(l2h-)?SECTION\d+/$1=\"$label.html/g;
$newnames{$node} = "$label.html";
}
}
}
}
print;
}
foreach $oldname (keys %newnames) {
# or ln -s
system("mv $oldname $newnames{$oldname}");
}
|