texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/Config.pm (texinfo_register_file_id_


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/Config.pm (texinfo_register_file_id_setting_function) (GNUT_get_file_id_setting_references), tp/Texinfo/Convert/HTML.pm (converter_initialize) (_normalized_label_id_file, _new_sectioning_command_target) (_set_root_commands_targets_node_files, _html_set_pages_files) (_prepare_special_elements), tp/init/book.pm: set customized functions used to set file names and targets through texinfo_register_file_id_setting_function() in Texinfo::Config. Use them in HTML.pm.
Date: Sun, 23 Jan 2022 10:48:23 -0500

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 84080c2c03 * tp/Texinfo/Config.pm 
(texinfo_register_file_id_setting_function) 
(GNUT_get_file_id_setting_references), tp/Texinfo/Convert/HTML.pm 
(converter_initialize) (_normalized_label_id_file, 
_new_sectioning_command_target) (_set_root_commands_targets_node_files, 
_html_set_pages_files) (_prepare_special_elements), tp/init/book.pm: set 
customized functions used to set file names and targets through 
texinfo_register_file_id_setting_function() in Texinfo::Config. Use them in 
HTML.pm.
84080c2c03 is described below

commit 84080c2c039bcc06e870e885684cf4cf19786af7
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sun Jan 23 16:48:09 2022 +0100

    * tp/Texinfo/Config.pm (texinfo_register_file_id_setting_function)
    (GNUT_get_file_id_setting_references),
    tp/Texinfo/Convert/HTML.pm (converter_initialize)
    (_normalized_label_id_file, _new_sectioning_command_target)
    (_set_root_commands_targets_node_files, _html_set_pages_files)
    (_prepare_special_elements), tp/init/book.pm: set customized
    functions used to set file names and targets through
    texinfo_register_file_id_setting_function() in Texinfo::Config.
    Use them in HTML.pm.
---
 ChangeLog                          | 12 ++++++++
 tp/TODO                            |  6 ----
 tp/Texinfo/Config.pm               | 15 ++++++++++
 tp/Texinfo/Convert/HTML.pm         | 58 +++++++++++++++++++++++++++-----------
 tp/init/book.pm                    |  3 +-
 tp/t/init/misc_file_collision.init |  5 ++--
 tp/t/init/only_toc_out.init        |  5 ++--
 tp/t/init/t2h_singular.init        |  2 +-
 8 files changed, 75 insertions(+), 31 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b0f65b2979..3e1876992a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2022-01-23  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/Config.pm (texinfo_register_file_id_setting_function)
+       (GNUT_get_file_id_setting_references),
+       tp/Texinfo/Convert/HTML.pm (converter_initialize)
+       (_normalized_label_id_file, _new_sectioning_command_target)
+       (_set_root_commands_targets_node_files, _html_set_pages_files)
+       (_prepare_special_elements), tp/init/book.pm: set customized
+       functions used to set file names and targets through
+       texinfo_register_file_id_setting_function() in Texinfo::Config.
+       Use them in HTML.pm.
+
 2022-01-23  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Config.pm (texinfo_register_type_format_info)
diff --git a/tp/TODO b/tp/TODO
index 2f82397397..cab87c9aee 100644
--- a/tp/TODO
+++ b/tp/TODO
@@ -23,12 +23,6 @@ HTML API
 Issues
 ------
 
-node_target_name
-node_file_name
-sectioning_command_target_name
-element_file_name
-special_element_target_file_name
-
 Some internal state used in conversion:
  _convert_anchor_command:
   $self->{'multiple_pass'}
diff --git a/tp/Texinfo/Config.pm b/tp/Texinfo/Config.pm
index 49cf8882b9..18a0520928 100644
--- a/tp/Texinfo/Config.pm
+++ b/tp/Texinfo/Config.pm
@@ -298,6 +298,7 @@ sub GNUT_get_stage_handlers()
 #####################################################################
 # API used to override formatting.  Used in HTML only.
 
+my $GNUT_file_id_setting_references = {};
 my $GNUT_formatting_references = {};
 my $GNUT_commands_conversion = {};
 my $GNUT_commands_open = {};
@@ -307,6 +308,20 @@ my $GNUT_no_arg_commands_formatting_strings = {};
 my $GNUT_style_commands_formatting_info = {};
 my $GNUT_types_formatting_info = {};
 
+# called from init files
+sub texinfo_register_file_id_setting_function($$)
+{
+  my $thing = shift;
+  my $handler = shift;
+  $GNUT_file_id_setting_references->{$thing} = $handler;
+}
+
+# called from the Converter
+sub GNUT_get_file_id_setting_references()
+{
+  return $GNUT_file_id_setting_references;
+}
+
 # called from init files
 sub texinfo_register_formatting_function($$)
 {
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index 267f627651..145f03ef4c 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -6079,6 +6079,14 @@ sub _pop_document_context($)
   }
 }
 
+# can be set through Texinfo::Config::texinfo_register_file_id_setting_function
+my %customizable_file_id_setting_references;
+foreach my $customized_reference ('label_target_name', 'node_file_name',
+                'sectioning_command_target_name', 'tree_unit_file_name',
+                'special_element_target_file_name') {
+  $customizable_file_id_setting_references{$customized_reference} = 1;
+}
+
 # Functions accessed with e.g. 'format_heading_text'.
 # used in Texinfo::Config
 %default_formatting_references = (
@@ -6356,6 +6364,7 @@ sub _load_htmlxref_files {
 #                 FIXME: always point to default?)
 #
 #    API exists
+#  file_id_setting
 #  commands_conversion
 #  commands_open
 #  types_conversion
@@ -6656,6 +6665,21 @@ sub converter_initialize($)
     }
   }
 
+  my $customized_file_id_setting_references
+    = Texinfo::Config::GNUT_get_file_id_setting_references();
+  # first check the validity of the names
+  foreach my $customized_file_id_setting_ref
+       (sort(keys(%{$customized_file_id_setting_references}))) {
+    if 
(!$customizable_file_id_setting_references{$customized_file_id_setting_ref}) {
+      $self->document_warn($self,
+                           sprintf(__("Unknown file and id setting function: 
%s"),
+                                   $customized_file_id_setting_ref));
+    } else {
+      $self->{'file_id_setting'}->{$customized_file_id_setting_ref}
+        = 
$customized_file_id_setting_references->{$customized_file_id_setting_ref};
+    }
+  }
+
   my $customized_formatting_references = 
Texinfo::Config::GNUT_get_formatting_references();
   # first check that all the customized_formatting_references
   # are in default_formatting_references
@@ -6919,9 +6943,9 @@ sub _normalized_label_id_file($$)
     $target = '';
   }
   # to find out the Top node, one could check $label_info->{'normalized'}
-  # FIXME change name?  It is not only for nodes
-  if (defined($Texinfo::Config::node_target_name)) {
-    $target = &$Texinfo::Config::node_target_name($label_info, $target);
+  if (defined($self->{'file_id_setting'}->{'label_target_name'})) {
+    $target = &{$self->{'file_id_setting'}->{'label_target_name'}}(
+                                                       $label_info, $target);
   }
 
   my $filename = $self->node_information_filename($label_info);
@@ -6983,10 +7007,10 @@ sub _new_sectioning_command_target($$)
     }
   }
 
-  if (defined($Texinfo::Config::sectioning_command_target_name)) {
+  if (defined($self->{'file_id_setting'}->{'sectioning_command_target_name'})) 
{
     ($target, $target_contents,
      $target_shortcontents, $filename)
-        = &$Texinfo::Config::sectioning_command_target_name($self,
+      = 
&{$self->{'file_id_setting'}->{'sectioning_command_target_name'}}($self,
                                      $command, $target,
                                      $target_contents,
                                      $target_shortcontents,
@@ -7042,9 +7066,9 @@ sub _set_root_commands_targets_node_files($$)
       my ($filename, $target)
         = $self->_normalized_label_id_file($label_element->{'extra'});
       $filename .= $extension;
-      if (defined($Texinfo::Config::node_file_name)) {
-        $filename = &$Texinfo::Config::node_file_name($self, $label_element,
-                                                     $filename);
+      if (defined($self->{'file_id_setting'}->{'node_file_name'})) {
+        $filename = &{$self->{'file_id_setting'}->{'node_file_name'}}(
+                                              $self, $label_element, 
$filename);
       }
       if ($self->get_conf('DEBUG')) {
         print STDERR "Label($label_element) \@$label_element->{'cmdname'} 
$target, $filename\n";
@@ -7254,11 +7278,11 @@ sub _html_set_pages_files($$$$$$$$)
   }
 
   foreach my $tree_unit (@$tree_units) {
-    if (defined($Texinfo::Config::element_file_name)) {
+    if (defined($self->{'file_id_setting'}->{'tree_unit_file_name'})) {
       # NOTE the information that it is associated with @top or @node Top
       # may be determined with $self->element_is_tree_unit_top($tree_unit);
-      my $filename = &$Texinfo::Config::element_file_name($self, $tree_unit,
-                                       
$tree_unit->{'structure'}->{'unit_filename'});
+      my $filename = &{$self->{'file_id_setting'}->{'tree_unit_file_name'}}(
+               $self, $tree_unit, 
$tree_unit->{'structure'}->{'unit_filename'});
       $self->set_tree_unit_file($tree_unit, $filename, $destination_directory)
          if (defined($filename));
     }
@@ -7405,9 +7429,9 @@ sub _prepare_special_elements($$$$)
     }
 
     my $filename;
-    if (defined($Texinfo::Config::special_element_target_file_name)) {
+    if 
(defined($self->{'file_id_setting'}->{'special_element_target_file_name'})) {
       ($target, $filename) 
-                 = &$Texinfo::Config::special_element_target_file_name(
+         = &{$self->{'file_id_setting'}->{'special_element_target_file_name'}}(
                                                             $self,
                                                             $element,
                                                             $target,
@@ -7445,9 +7469,9 @@ sub _prepare_special_elements($$$$)
 
       # only the filename is used
       my ($target, $filename);
-      if (defined($Texinfo::Config::special_element_target_file_name)) {
+      if 
(defined($self->{'file_id_setting'}->{'special_element_target_file_name'})) {
         ($target, $filename) 
-                 = &$Texinfo::Config::special_element_target_file_name(
+          = 
&{$self->{'file_id_setting'}->{'special_element_target_file_name'}}(
                                                             $self,
                                                             $element,
                                                             $target,
@@ -7509,9 +7533,9 @@ sub _prepare_contents_elements($)
            = $contents_element;
         my $target = $self->{'special_elements_targets'}->{$element_type};
         my $filename;
-        if (defined($Texinfo::Config::special_element_target_file_name)) {
+        if 
(defined($self->{'file_id_setting'}->{'special_element_target_file_name'})) {
           ($target, $filename)
-               = &$Texinfo::Config::special_element_target_file_name(
+            = 
&{$self->{'file_id_setting'}->{'special_element_target_file_name'}}(
                                                           $self,
                                                           $contents_element,
                                                           $target,
diff --git a/tp/init/book.pm b/tp/init/book.pm
index 595c7f6284..d6adf59422 100644
--- a/tp/init/book.pm
+++ b/tp/init/book.pm
@@ -382,6 +382,7 @@ sub book_element_file_name($$$)
   return $new_file_name;
 }
 
-$element_file_name = \&book_element_file_name;
+texinfo_register_file_id_setting_function('tree_unit_file_name',
+                                          \&book_element_file_name);
 
 1;
diff --git a/tp/t/init/misc_file_collision.init 
b/tp/t/init/misc_file_collision.init
index 12e1af6520..45efa97a31 100644
--- a/tp/t/init/misc_file_collision.init
+++ b/tp/t/init/misc_file_collision.init
@@ -1,8 +1,7 @@
 use strict;
 
-use vars qw($element_file_name);
-
-$element_file_name = \&test_misc_file_name;
+texinfo_register_file_id_setting_function('tree_unit_file_name',
+                                          \&test_misc_file_name);
 
 sub test_misc_file_name($$$)
 {
diff --git a/tp/t/init/only_toc_out.init b/tp/t/init/only_toc_out.init
index 88cf74a17b..84616f8226 100644
--- a/tp/t/init/only_toc_out.init
+++ b/tp/t/init/only_toc_out.init
@@ -1,8 +1,7 @@
 use strict;
 
-use vars qw($special_element_target_file_name);
-
-$special_element_target_file_name = \&toc_out_element_file_name;
+texinfo_register_file_id_setting_function('special_element_target_file_name',
+                                          \&toc_out_element_file_name);
 
 sub toc_out_element_file_name($$$$$)
 {
diff --git a/tp/t/init/t2h_singular.init b/tp/t/init/t2h_singular.init
index d062cfb0f2..a2015e27cf 100644
--- a/tp/t/init/t2h_singular.init
+++ b/tp/t/init/t2h_singular.init
@@ -312,6 +312,6 @@ sub t2h_node_file_name($$$)
   return $filename;
 }
 
-$node_file_name = \&t2h_node_file_name;
+texinfo_register_file_id_setting_function('node_file_name', 
\&t2h_node_file_name);
 
 1;    # This must be the last line



reply via email to

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