texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]


From: Patrice Dumas
Date: Tue, 1 Oct 2024 17:24:30 -0400 (EDT)

branch: master
commit ef603b5f9814f67c725baa805dfcd205e9cf3f14
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Mon Jul 29 14:31:50 2024 +0200

    * tp/Texinfo/Data/default_direction_strings.csv: fix order.
    
    * tp/maintain/generate_convert_data_perl_code.pl,
    tp/Texinfo/Convert/HTML.pm, tp/Texinfo/OutputUnits.pm: gather
    directions orders from one place only, in
    generate_convert_data_perl_code.pl, setup get_directions_order in
    Texingo::Data.
---
 ChangeLog                                      | 10 +++++++
 tp/Texinfo/Convert/HTML.pm                     | 10 ++++---
 tp/Texinfo/Data.pm                             | 19 ++++++++----
 tp/Texinfo/Data/default_direction_strings.csv  |  2 +-
 tp/Texinfo/OutputUnits.pm                      | 11 ++++---
 tp/maintain/generate_convert_data_perl_code.pl | 40 ++++++++++++++++++++++++--
 6 files changed, 73 insertions(+), 19 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 812e1e69fe..8348cb6d6f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2024-07-29  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/Data/default_direction_strings.csv: fix order.
+
+       * tp/maintain/generate_convert_data_perl_code.pl,
+       tp/Texinfo/Convert/HTML.pm, tp/Texinfo/OutputUnits.pm: gather
+       directions orders from one place only, in
+       generate_convert_data_perl_code.pl, setup get_directions_order in
+       Texingo::Data.
+
 2024-07-29  Patrice Dumas  <pertusus@free.fr>
 
        * doc/texi2any_api.texi (Directions), tp/Texinfo/OutputUnits.pm
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index 81e39222b3..d8610e71f6 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -2611,10 +2611,12 @@ my %default_special_unit_info
 %default_translated_special_unit_info
   = %{ Texinfo::Data::get_default_translated_special_unit_info() };
 
-# to be kept in the same order as C code HTML_GLOBAL_DIRECTIONS_LIST.
-my @global_directions = ('First', 'Top', 'Index', 'Last');
+my $direction_orders = Texinfo::Data::get_directions_order();
+# 'global', 'relative', 'file'
+# include space direction
+my @global_directions_order = @{$direction_orders->[0]};
 my %global_and_special_directions;
-foreach my $global_direction (@global_directions) {
+foreach my $global_direction (@global_directions_order) {
   $global_and_special_directions{$global_direction} = 1;
 }
 foreach my $special_direction (values(
@@ -10485,7 +10487,7 @@ sub _prepare_output_units_global_targets($$$$)
 
   if ($self->get_conf('DEBUG')) {
     print STDERR "GLOBAL DIRECTIONS:\n";
-    foreach my $global_direction (@global_directions) {
+    foreach my $global_direction (@global_directions_order) {
       if (defined($self->global_direction_unit($global_direction))) {
         my $global_unit = $self->global_direction_unit($global_direction);
         print STDERR " $global_direction"
diff --git a/tp/Texinfo/Data.pm b/tp/Texinfo/Data.pm
index d8e45d4ba1..5d280de84b 100644
--- a/tp/Texinfo/Data.pm
+++ b/tp/Texinfo/Data.pm
@@ -127,6 +127,13 @@ sub get_default_translated_special_unit_info() {
   return \%default_translated_special_unit_info;
 }
 
+sub get_directions_order() {
+return [['First', 'Top', 'Index', 'Last', ' '],
+['This', 'Forward', 'Back', 'FastForward', 'FastBack', 'Next', 'Prev', 'Up', 
'NodeNext', 'NodePrev', 'NodeUp', 'NodeForward', 'NodeBack'],
+['PrevFile', 'NextFile'],
+];
+}
+
 my %default_converted_directions_strings = (
 
   'rel' => {
@@ -144,8 +151,8 @@ my %default_converted_directions_strings = (
     'Prev' => 'prev',
     'Up' => 'up',
     'NodeNext' => 'next',
-    'NodeUp' => 'up',
     'NodePrev' => 'prev',
+    'NodeUp' => 'up',
     'NodeForward' => '',
     'NodeBack' => '',
     'PrevFile' => 'prev',
@@ -170,8 +177,8 @@ my %default_converted_directions_strings = (
     'Prev' => 'p',
     'Up' => 'u',
     'NodeNext' => 'n',
-    'NodeUp' => 'u',
     'NodePrev' => 'p',
+    'NodeUp' => 'u',
     'NodeForward' => '',
     'NodeBack' => '',
     'PrevFile' => '',
@@ -196,8 +203,8 @@ my %default_converted_directions_strings = (
     'Prev' => '1.2.2',
     'Up' => '1.2',
     'NodeNext' => '1.2.4',
-    'NodeUp' => '1.2',
     'NodePrev' => '1.2.2',
+    'NodeUp' => '1.2',
     'NodeForward' => '1.2.4',
     'NodeBack' => '1.2.2',
     'PrevFile' => ' &nbsp; ',
@@ -229,8 +236,8 @@ my %default_translated_directions_strings = (
     'Prev' => {'to_convert' => Texinfo::Common::pgdt('Prev direction string', 
'Prev')},
     'Up' => {'to_convert' => Texinfo::Common::pgdt('Up direction string', ' Up 
')},
     'NodeNext' => {'to_convert' => Texinfo::Common::pgdt('NodeNext direction 
string', 'Next')},
-    'NodeUp' => {'to_convert' => Texinfo::Common::pgdt('NodeUp direction 
string', 'Up')},
     'NodePrev' => {'to_convert' => Texinfo::Common::pgdt('NodePrev direction 
string', 'Previous')},
+    'NodeUp' => {'to_convert' => Texinfo::Common::pgdt('NodeUp direction 
string', 'Up')},
     'NodeForward' => {'to_convert' => Texinfo::Common::pgdt('NodeForward 
direction string', 'Forward node')},
     'NodeBack' => {'to_convert' => Texinfo::Common::pgdt('NodeBack direction 
string', 'Back node')},
     'PrevFile' => {'to_convert' => Texinfo::Common::pgdt('PrevFile direction 
string', 'Previous file')},
@@ -254,8 +261,8 @@ my %default_translated_directions_strings = (
     'Prev' => {'to_convert' => Texinfo::Common::pgdt('Prev direction 
description', 'Previous section on same level')},
     'Up' => {'to_convert' => Texinfo::Common::pgdt('Up direction description', 
'Up section')},
     'NodeNext' => {'to_convert' => Texinfo::Common::pgdt('NodeNext direction 
description', 'Next node')},
-    'NodeUp' => {'to_convert' => Texinfo::Common::pgdt('NodeUp direction 
description', 'Up node')},
     'NodePrev' => {'to_convert' => Texinfo::Common::pgdt('NodePrev direction 
description', 'Previous node')},
+    'NodeUp' => {'to_convert' => Texinfo::Common::pgdt('NodeUp direction 
description', 'Up node')},
     'NodeForward' => {'to_convert' => Texinfo::Common::pgdt('NodeForward 
direction description', 'Next node in node reading order')},
     'NodeBack' => {'to_convert' => Texinfo::Common::pgdt('NodeBack direction 
description', 'Previous node in node reading order')},
     'PrevFile' => {'to_convert' => Texinfo::Common::pgdt('PrevFile direction 
description', 'Back section in previous file')},
@@ -280,8 +287,8 @@ my %default_translated_directions_strings = (
     'Prev' => {'to_convert' => Texinfo::Common::pgdt('Prev direction button 
label', 'Prev')},
     'Up' => {'to_convert' => Texinfo::Common::pgdt('Up direction button 
label', 'Up')},
     'NodeNext' => {'to_convert' => Texinfo::Common::pgdt('NodeNext direction 
button label', 'NodeNext')},
-    'NodeUp' => {'to_convert' => Texinfo::Common::pgdt('NodeUp direction 
button label', 'NodeUp')},
     'NodePrev' => {'to_convert' => Texinfo::Common::pgdt('NodePrev direction 
button label', 'NodePrev')},
+    'NodeUp' => {'to_convert' => Texinfo::Common::pgdt('NodeUp direction 
button label', 'NodeUp')},
     'NodeForward' => {'to_convert' => Texinfo::Common::pgdt('NodeForward 
direction button label', 'NodeForward')},
     'NodeBack' => {'to_convert' => Texinfo::Common::pgdt('NodeBack direction 
button label', 'NodeBack')},
     'PrevFile' => {'to_convert' => Texinfo::Common::pgdt('PrevFile direction 
button label', 'PrevFile')},
diff --git a/tp/Texinfo/Data/default_direction_strings.csv 
b/tp/Texinfo/Data/default_direction_strings.csv
index 96eb305cf8..ef46570273 100644
--- a/tp/Texinfo/Data/default_direction_strings.csv
+++ b/tp/Texinfo/Data/default_direction_strings.csv
@@ -13,8 +13,8 @@ Next|next|n|1.2.4||Next direction string|Next||Next direction 
description|Next s
 Prev|prev|p|1.2.2||Prev direction string|Prev||Prev direction 
description|Previous section on same level||Prev direction button label|Prev|
 Up|up|u|1.2||Up direction string| Up ||Up direction description|Up section||Up 
direction button label|Up|
 NodeNext|next|n|1.2.4||NodeNext direction string|Next||NodeNext direction 
description|Next node||NodeNext direction button label|NodeNext|
-NodeUp|up|u|1.2||NodeUp direction string|Up||NodeUp direction description|Up 
node||NodeUp direction button label|NodeUp|
 NodePrev|prev|p|1.2.2||NodePrev direction string|Previous||NodePrev direction 
description|Previous node||NodePrev direction button label|NodePrev|
+NodeUp|up|u|1.2||NodeUp direction string|Up||NodeUp direction description|Up 
node||NodeUp direction button label|NodeUp|
 NodeForward|||1.2.4||NodeForward direction string|Forward node||NodeForward 
direction description|Next node in node reading order||NodeForward direction 
button label|NodeForward|
 NodeBack|||1.2.2||NodeBack direction string|Back node||NodeBack direction 
description|Previous node in node reading order||NodeBack direction button 
label|NodeBack|
 PrevFile|prev|| $html_default_entity_nbsp ||PrevFile direction string|Previous 
file||PrevFile direction description|Back section in previous file||PrevFile 
direction button label|PrevFile|
diff --git a/tp/Texinfo/OutputUnits.pm b/tp/Texinfo/OutputUnits.pm
index 2e02948f10..d82066e96f 100644
--- a/tp/Texinfo/OutputUnits.pm
+++ b/tp/Texinfo/OutputUnits.pm
@@ -41,6 +41,7 @@ use Texinfo::XSLoader;
 
 use Texinfo::Commands;
 use Texinfo::Common;
+use Texinfo::Data;
 use Texinfo::ManipulateTree;
 
 require Exporter;
@@ -652,12 +653,10 @@ sub output_unit_texi($)
                                                           $unit_command);
 }
 
-# Should be in the same order as relative_unit_direction_name
-# in main/output_unit.c
-my @relative_directions_order = ('This', 'Forward', 'Back', 'FastForward',
- 'FastBack', 'Next', 'Prev', 'Up', 'NodeNext', 'NodePrev', 'NodeUp',
- 'NodeForward', 'NodeBack');
-my @file_directions_order = ('PrevFile', 'NextFile');
+my $direction_orders = Texinfo::Data::get_directions_order();
+# 'global', 'relative', 'file'
+my @relative_directions_order = @{$direction_orders->[1]};
+my @file_directions_order = @{$direction_orders->[2]};
 my @all_directions_order
     = (@relative_directions_order, @file_directions_order,
        map {'FirstInFile'.$_} @relative_directions_order);
diff --git a/tp/maintain/generate_convert_data_perl_code.pl 
b/tp/maintain/generate_convert_data_perl_code.pl
index 386b5f54f1..9a2ceaefaf 100755
--- a/tp/maintain/generate_convert_data_perl_code.pl
+++ b/tp/maintain/generate_convert_data_perl_code.pl
@@ -150,6 +150,8 @@ my %su_hash_lines;
 foreach my $type (@su_ordered_untranslated_hashes, 
@su_ordered_translated_hashes) {
   $su_hash_lines{$type} = '';
 }
+# gather for direction structures below
+my %su_directions;
 my @su_ordered;
 while (<DSUI>) {
   chomp;
@@ -161,6 +163,9 @@ while (<DSUI>) {
     my $value = '';
     if (defined($data[$index])) {
       $value = $data[$index];
+      if ($untranslated_type eq 'direction') {
+        $su_directions{$value} = 1;
+      }
     }
     $su_hash_lines{$untranslated_type} .= "    '$special_unit' => '$value',\n";
   }
@@ -207,6 +212,21 @@ print OUT 'sub get_default_translated_special_unit_info() {
 }'."\n\n";
 
 
+my @global_directions = ('First', 'Top', 'Index', 'Last');
+# add space 'direction'
+my @ordered_global_directions = (@global_directions, ' ');
+my %ordered_global_directions_hash;
+foreach my $global_direction (@ordered_global_directions) {
+  $ordered_global_directions_hash{$global_direction} = 1;
+}
+
+my %direction_orders = (
+  'global' => \@ordered_global_directions,
+  'relative' => [],
+  'file' => []
+);
+my @orders_order = ('global', 'relative', 'file');
+
 my @d_ordered_untranslated_hashes;
 my @d_ordered_translated_hashes;
 
@@ -258,12 +278,20 @@ my %hash_lines;
 foreach my $type (@d_ordered_untranslated_hashes, 
@d_ordered_translated_hashes) {
   $hash_lines{$type} = '';
 }
-my @d_ordered;
+my @relative_directions_order;
+my @file_directions_order;
 while (<DDS>) {
   chomp;
   my @data = split (/\|/);
   my $direction = $data[0];
-  push @d_ordered, $direction;
+  if (!$ordered_global_directions_hash{$direction}
+      and !$su_directions{$direction}) {
+    if ($direction =~ /File/) {
+      push @{$direction_orders{'file'}}, $direction;
+    } else {
+      push @{$direction_orders{'relative'}}, $direction;
+    }
+  }
   foreach my $untranslated_type (@d_ordered_untranslated_hashes) {
     my $index = $d_header_indices{$untranslated_type};
     my $value = '';
@@ -296,6 +324,14 @@ while (<DDS>) {
   }
 }
 
+print OUT 'sub get_directions_order() {'."\n"
+  . 'return [';
+foreach my $order (@orders_order) {
+  print OUT '['.join(', ', map{"'$_'"} @{$direction_orders{$order}})."],\n";
+}
+print OUT "];\n}\n\n";
+
+
 print OUT "my %default_converted_directions_strings = (\n";
 
 foreach my $type (@d_ordered_untranslated_hashes) {



reply via email to

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