[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Patrice Dumas |
Date: |
Fri, 14 Jul 2023 15:43:21 -0400 (EDT) |
branch: master
commit 42dbac7b5aa4f6fba97ffaf09ee3daf77fff8112
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Fri Jul 14 21:34:25 2023 +0200
* tp/Texinfo/Convert/HTML.pm (_html_set_pages_files): set up a
reproducible order following the tree units order for the call
of set_file_path.
---
ChangeLog | 6 ++++++
tp/Texinfo/Convert/HTML.pm | 25 ++++++++++++++++++++++++-
2 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index b3d4e02ab0..88708a26d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,6 +12,12 @@
* NEWS: remove reverted change about index commands ending
paragraphs.
+2023-07-14 Patrice Dumas <pertusus@free.fr>
+
+ * tp/Texinfo/Convert/HTML.pm (_html_set_pages_files): set up a
+ reproducible order following the tree units order for the call
+ of set_file_path.
+
2023-07-14 Patrice Dumas <pertusus@free.fr>
* tp/Texinfo/XS/parsetexi/debug.c (debug_print_element)
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index 8b1091871c..46f27c4aec 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -8689,6 +8689,7 @@ sub _html_set_pages_files($$$$$$$$)
and $self->get_conf('EXTENSION') ne '');
my %filenames_paths;
+ my @filenames_order;
my %unit_file_name_paths;
# associate a file to the source information leading to set the file
# name. Use the first element source information associated to a file
@@ -8702,6 +8703,7 @@ sub _html_set_pages_files($$$$$$$$)
my %files_source_info = ();
if (!$self->get_conf('SPLIT')) {
$filenames_paths{$output_filename} = $output_file;
+ push @filenames_order, $output_filename;
foreach my $tree_unit (@$tree_units) {
$unit_file_name_paths{$tree_unit} = $output_filename;
}
@@ -8719,6 +8721,7 @@ sub _html_set_pages_files($$$$$$$$)
my ($node_top_tree_unit) = $self->_html_get_tree_root_element($node_top);
die "BUG: No element for top node" if (!defined($node_top_tree_unit));
$filenames_paths{$top_node_filename} = undef;
+ push @filenames_order, $top_node_filename;
$unit_file_name_paths{$node_top_tree_unit} = $top_node_filename;
$files_source_info{$top_node_filename}
= {'file_info_type' => 'special_file',
@@ -8760,6 +8763,8 @@ sub _html_set_pages_files($$$$$$$$)
and $files_source_info{$node_filename}
->{'file_info_type'} ne 'stand_in_file');
}
+ push @filenames_order, $node_filename
+ unless exists($filenames_paths{$node_filename});
$filenames_paths{$node_filename} = undef;
$unit_file_name_paths{$file_tree_unit} = $node_filename;
last;
@@ -8771,6 +8776,8 @@ sub _html_set_pages_files($$$$$$$$)
if ($command) {
if ($command->{'cmdname'} eq 'top' and !$node_top
and defined($top_node_filename)) {
+ push @filenames_order, $top_node_filename
+ unless exists($filenames_paths{$top_node_filename});
$filenames_paths{$top_node_filename} = undef;
$unit_file_name_paths{$file_tree_unit} = $top_node_filename;
$files_source_info{$top_node_filename}
@@ -8779,6 +8786,8 @@ sub _html_set_pages_files($$$$$$$$)
} else {
my $section_filename
= $self->{'targets'}->{$command}->{'section_filename'};
+ push @filenames_order, $section_filename
+ unless exists($filenames_paths{$section_filename});
$filenames_paths{$section_filename} = undef;
$unit_file_name_paths{$file_tree_unit} = $section_filename;
$files_source_info{$section_filename}
@@ -8792,6 +8801,8 @@ sub _html_set_pages_files($$$$$$$$)
# when everything else has failed
if ($file_nr == 0 and !$node_top
and defined($top_node_filename)) {
+ push @filenames_order, $top_node_filename
+ unless exists($filenames_paths{$top_node_filename});
$filenames_paths{$top_node_filename} = undef;
$unit_file_name_paths{$file_tree_unit} = $top_node_filename;
$files_source_info{$top_node_filename}
@@ -8801,6 +8812,8 @@ sub _html_set_pages_files($$$$$$$$)
} else {
my $filename = $document_name . "_$file_nr";
$filename .= $extension;
+ push @filenames_order, $filename
+ unless exists($filenames_paths{$filename});
$filenames_paths{$filename} = undef;
$unit_file_name_paths{$file_tree_unit} = $filename;
$files_source_info{$filename}
@@ -8834,6 +8847,14 @@ sub _html_set_pages_files($$$$$$$$)
$self, $tree_unit, $filename, $filepath);
if (defined($user_filename)) {
$filename = $user_filename;
+ if (defined($user_filepath) and defined($filenames_paths{$filename})
+ and $user_filepath ne $filenames_paths{$filename}) {
+ $self->document_warn($self,
+ sprintf(__("resetting %s file path %s to %s"),
+ $filename, $filenames_paths{$filename}, $user_filepath));
+ }
+ push @filenames_order, $filename
+ unless exists($filenames_paths{$filename});
$filenames_paths{$filename} = $user_filepath;
$files_source_info{$filename} = {'file_info_type' => 'special_file',
'file_info_name' => 'user_defined'};
@@ -8856,6 +8877,8 @@ sub _html_set_pages_files($$$$$$$$)
my $filename
= $self->{'targets'}->{$special_element}->{'special_element_filename'};
if (defined($filename)) {
+ push @filenames_order, $filename
+ unless exists($filenames_paths{$filename});
$filenames_paths{$filename} = undef;
$self->set_tree_unit_file($special_element, $filename);
$self->{'file_counters'}->{$filename} = 0
@@ -8875,7 +8898,7 @@ sub _html_set_pages_files($$$$$$$$)
}
}
}
- foreach my $filename (keys(%filenames_paths)) {
+ foreach my $filename (@filenames_order) {
$self->set_file_path($filename, $destination_directory,
$filenames_paths{$filename});
}