[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' => ' ',
@@ -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) {