#! /usr/bin/env perl# On Cygwin, we actually have to generate a temporary file when doing# the inplace edit, or we'll get permission errors. Not sure who's# bug this is, except that it isn't ours. To deal with this, we# generate backups during the edit phase and remove them at the end.#use English;$INPLACE_EDIT = '.bak';# read the labels, then reverse the mappingsrequire "labels.pl";%nodes = ();my $key;# sort so that we get a consistent assignment for nodes with multiple labels foreach $label (sort keys %external_labels) { # # If the label can't be used as a filename on non-Unix platforms, # skip it. Such labels may be used internally within the documentation, # but will never be used for filename generation. # if ($label =~ /^([-.a-zA-Z0-9]+)$/) { $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)=[\"\']node\d+\.html[\#\"\']/) { @parts = split(/(HREF|href)\=[\"\']/); shift @parts; for $node (@parts) { $node =~ s/[\#\"\'].*$//g; chomp($node); if (defined($nodes{$node})) { $label = $nodes{$node}; if (s/(HREF|href)=([\"\'])$node([\#\"\'])/href=$2$label.html$3/g) { s/(HREF|href)=([\"\'])$label.html/href=$2$label.html/g; $newnames{$node} = "$label.html"; } } } } print;}foreach $oldname (keys %newnames) { rename($oldname, $newnames{$oldname});}foreach $filename (glob('*.bak')) { unlink($filename);}
#! /usr/bin/env perl
# On Cygwin, we actually have to generate a temporary file when doing
# the inplace edit, or we'll get permission errors. Not sure who's
# bug this is, except that it isn't ours. To deal with this, we
# generate backups during the edit phase and remove them at the end.
#
use English;
$INPLACE_EDIT = '.bak';
# 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) {
#
# If the label can't be used as a filename on non-Unix platforms,
# skip it. Such labels may be used internally within the documentation,
# but will never be used for filename generation.
#
if ($label =~ /^([-.a-zA-Z0-9]+)$/) {
$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)=[\"\']node\d+\.html[\#\"\']/) {
@parts = split(/(HREF|href)\=[\"\']/);
shift @parts;
for $node (@parts) {
$node =~ s/[\#\"\'].*$//g;
chomp($node);
if (defined($nodes{$node})) {
$label = $nodes{$node};
if (s/(HREF|href)=([\"\'])$node([\#\"\'])/href=$2$label.html$3/g) {
s/(HREF|href)=([\"\'])$label.html/href=$2$label.html/g;
$newnames{$node} = "$label.html";
}
}
}
}
print;
}
foreach $oldname (keys %newnames) {
rename($oldname, $newnames{$oldname});
}
foreach $filename (glob('*.bak')) {
unlink($filename);
}