texinfo-commits
[Top][All Lists]
Advanced

[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});
   }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]