texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/Translations.pm (gdt, complete_indic


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/Translations.pm (gdt, complete_indices), tp/Texinfo/Convert/Text.pm: pass optionally the language to gdt().
Date: Sun, 05 Sep 2021 09:44:20 -0400

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 fb6c301  * tp/Texinfo/Translations.pm (gdt, complete_indices), 
tp/Texinfo/Convert/Text.pm: pass optionally the language to gdt().
fb6c301 is described below

commit fb6c30157140a26f3f86d9518af71c5b8d4d3cac
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sun Sep 5 15:44:11 2021 +0200

    * tp/Texinfo/Translations.pm (gdt, complete_indices),
    tp/Texinfo/Convert/Text.pm: pass optionally the language to gdt().
    
    * tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info)
    (_set_errors_node_lists_labels_indices, parse_texi_line): do
    the actions after parsing that are done in ParserNonXS for
    all parsing functions, using _set_errors_node_lists_labels_indices().
    
    * tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_text):
    do not merge the indices, it is done elsewhere.
---
 ChangeLog                            |  14 +++
 tp/TODO                              |   2 -
 tp/Texinfo/Convert/Text.pm           |  14 +--
 tp/Texinfo/Translations.pm           |  80 +++++++-------
 tp/Texinfo/XS/parsetexi/Parsetexi.pm |  58 ++++-------
 tp/t/languages.t                     |  11 ++
 tp/t/results/languages/multiple.pl   | 196 +++++++++++++++++++++++++++++------
 7 files changed, 256 insertions(+), 119 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 1739989..8afad52 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
 2021-09-05  Patrice Dumas  <pertusus@free.fr>
 
+       * tp/Texinfo/Translations.pm (gdt, complete_indices),
+       tp/Texinfo/Convert/Text.pm: pass optionally the language to gdt().
+
+       * tp/Texinfo/XS/parsetexi/Parsetexi.pm (get_parser_info)
+       (_set_errors_node_lists_labels_indices, parse_texi_line): do
+       the actions after parsing that are done in ParserNonXS for
+       all parsing functions, using _set_errors_node_lists_labels_indices().
+
+       * tp/Texinfo/XS/parsetexi/Parsetexi.pm (parse_texi_text):
+       do not merge the indices, it is done elsewhere.
+
+
+2021-09-05  Patrice Dumas  <pertusus@free.fr>
+
        * texi2any.pl: use Storable::dclone to copy parser configuration
        for each file and command line options for each file.  A shallow
        copy is not enough to make sure that the initial information is not
diff --git a/tp/TODO b/tp/TODO
index ef1f5f6..3033b14 100644
--- a/tp/TODO
+++ b/tp/TODO
@@ -15,8 +15,6 @@ Before next release
 
 Rename _set_global_multiple_commands
 
-complete_indices, gdt, some code in Text: add documentlanguage arg to gdt
-
 not internal (maybe move?)
 Texinfo::Common::_convert_text_options
 
diff --git a/tp/Texinfo/Convert/Text.pm b/tp/Texinfo/Convert/Text.pm
index e76e46d..cde2deb 100644
--- a/tp/Texinfo/Convert/Text.pm
+++ b/tp/Texinfo/Convert/Text.pm
@@ -367,19 +367,9 @@ sub _convert($;$)
   if (defined($root->{'text'})) {
     if ($root->{'type'} and $root->{'type'} eq 'untranslated'
         and $options and $options->{'converter'}) {
-      # FIXME here converter is both a source for the documentlanguage
-      # information, modified for the translation and used for the
-      # translation itself.  It is wrong on two levels
-      # * configuration and other functions should be seprated
-      # * there should not be a need to modify internal converter
-      #   state to get the translation
-      my $save_lang = $options->{'converter'}->get_conf('documentlanguage');
-      $options->{'converter'}->{'documentlanguage'}
-        = $root->{'extra'}->{'documentlanguage'};
-      my $tree = Texinfo::Translations::gdt($options->{'converter'},
-                                      $root->{'text'});
+      my $tree = $options->{'converter'}->gdt($root->{'text'}, undef,
+                        undef, $root->{'extra'}->{'documentlanguage'});
       $result = _convert($tree, $options);
-      $options->{'converter'}->{'documentlanguage'} = $save_lang;
     } else {
       $result = $root->{'text'};
       if ((! defined($root->{'type'}) 
diff --git a/tp/Texinfo/Translations.pm b/tp/Texinfo/Translations.pm
index 9ce5ef8..d24827f 100644
--- a/tp/Texinfo/Translations.pm
+++ b/tp/Texinfo/Translations.pm
@@ -52,9 +52,15 @@ sub _encode_i18n_string($$)
 
 # Get document translation - handle translations of in-document strings.
 # Return a parsed Texinfo tree
-sub gdt($$;$$)
+sub gdt($$;$$$)
 {
-  my ($self, $message, $context, $type) = @_;
+  my ($self, $message, $context, $type, $lang) = @_;
+
+  # In addition to being settable from the command line,
+  # the language needs to be dynamic in case there is an untranslated string
+  # from another language that needs to be translated.
+  $lang = $self->get_conf('documentlanguage') if (!defined($lang));
+  $lang = $DEFAULT_LANGUAGE if (!defined($lang));
 
   my $re = join '|', map { quotemeta $_ } keys %$context
       if (defined($context) and ref($context));
@@ -81,9 +87,9 @@ sub gdt($$;$$)
   our $locale_command;
   if (!$locale and !$locale_command) {
     $locale_command = "locale -a";
-    my @locales = split("\n", `$locale_command`);
+    my @local_command_locales = split("\n", `$locale_command`);
     if ($? == 0) {
-      for my $try (@locales) {
+      foreach my $try (@local_command_locales) {
         next if $try eq 'C' or $try eq 'POSIX';
         $locale = POSIX::setlocale(LC_ALL, $try);
         last if $locale;
@@ -114,11 +120,6 @@ sub gdt($$;$$)
     }
   }
 
-  # This needs to be dynamic in case there is an untranslated string
-  # from another language that needs to be translated.
-  # FIXME make it an argument
-  my $lang = $self->get_conf('documentlanguage');
-  $lang = $DEFAULT_LANGUAGE if (!defined($lang));
   my @langs = ($lang);
   if ($lang =~ /^([a-z]+)_([A-Z]+)/) {
     my $main_lang = $1;
@@ -126,22 +127,28 @@ sub gdt($$;$$)
     push @langs, $main_lang;
   }
 
-  my $locales = '';
-
+  my @locales;
   foreach my $language (@langs) {
     if ($encoding) {
-      $locales .= "$language.$encoding:";
+      push @locales, "$language.$encoding";
     } else {
-      $locales .= "$language:";
+      push @locales, $language;
     }
     # always try us-ascii, the charset should always be a subset of
     # all charset, and should resort to @-commands if needed for non
     # ascii characters
+    # REMARK this is not necessarily true for every language/encoding.
+    # This can be true for latin1, and maybe some other 8 bit encodings
+    # with accents available as @-commands, but not for most
+    # language.  However, for those languages, it is unlikely that
+    # the locale with .us-ascii can be set, so it should not hurt
+    # to add this possibility.
     if (!$encoding or ($encoding and $encoding ne 'us-ascii')) {
-      $locales .= "$language.us-ascii:";
+      push @locales, "$language.us-ascii";
     }
   }
-  $locales =~ s/:$//;
+
+  my $locales = join(':', @locales);
 
   Locale::Messages::nl_putenv("LANGUAGE=$locales");
 
@@ -169,18 +176,19 @@ sub gdt($$;$$)
     return $translation_result;
   }
 
-  my $parser_conf;
-  # we change the substituted brace-enclosed strings to values, that
-  # way they are substituted, including when they are Texinfo trees.
-  # a _ is prepended to avoid clashing with other values, although since
-  # the parser is a new one there should not be any problem anyway.
+  # we change the substituted brace-enclosed strings to internal
+  # values marked by @txiinternalvalue such that their location
+  # in the Texinfo tree can be marked.  They are substituted
+  # after the parsing in the final tree.
+  # Using a special command that is invalid unless a special
+  # configuration is set means that there should be no clash
+  # with @-commands used in translations.
   if (defined($re)) {
     # next line taken from libintl perl, copyright Guido. sub __expand
     $translation_result =~ s/\{($re)\}/\@txiinternalvalue\{$1\}/g;
   }
-
-  # Don't reuse the current parser itself, as (tested) the parsing goes
-  # wrong, certainly because the parsed text can affect the parser state.
+  
+  # determine existing parser, if any
   my $current_parser;
   if (ref($self) eq 'Texinfo::Parser') {
     $current_parser = $self;
@@ -188,6 +196,10 @@ sub gdt($$;$$)
     $current_parser = $self->{'parser'};
   }
 
+  # Don't reuse the current parser itself, as (tested) the parsing goes
+  # wrong, certainly because the parsed text can affect the parser state.
+
+  my $parser_conf;
   if ($current_parser) {
     # 'TEST' can be used fot @today{} expansion.
     # FIXME use get_conf
@@ -281,16 +293,13 @@ sub complete_indices
 {
   my $self = shift;
 
-  my ($index_entry, $index_contents_normalized);
-  
-  my $save_lang = $self->get_conf('documentlanguage');
-
   foreach my $index_name (keys(%{$self->{'index_names'}})) {
     next if !defined $self->{'index_names'}->{$index_name}->{'index_entries'};
     foreach my $entry 
(@{$self->{'index_names'}->{$index_name}->{'index_entries'}}) {
       $entry->{'in_code'} = $self->{'index_names'}->{$index_name}->{'in_code'};
       
       if (!defined $entry->{'content'}) {
+        my ($index_entry, $index_contents_normalized);
         my $def_command = $entry->{'command'}->{'extra'}->{'def_command'};
 
         my $def_parsed_hash = 
$entry->{'command'}->{'extra'}->{'def_parsed_hash'};
@@ -298,25 +307,27 @@ sub complete_indices
             and $def_command) {
           # Use the document language that was current when the command was
           # used for getting the translation.
-          $self->{'documentlanguage'}
+          my $entry_language
              = $entry->{'command'}->{'extra'}->{'documentlanguage'};
           if ($def_command eq 'defop'
               or $def_command eq 'deftypeop'
               or $def_command eq 'defmethod'
               or $def_command eq 'deftypemethod') {
             $index_entry = $self->gdt('{name} on {class}',
-                                  {'name' => $def_parsed_hash->{'name'},
-                                   'class' => $def_parsed_hash->{'class'}});
-           $index_contents_normalized
-             = [_non_bracketed_contents($def_parsed_hash->{'name'}),
+                                      {'name' => $def_parsed_hash->{'name'},
+                                       'class' => $def_parsed_hash->{'class'}},
+                                      undef, $entry_language);
+            $index_contents_normalized
+              = [_non_bracketed_contents($def_parsed_hash->{'name'}),
                 { 'text' => ' on '},
                 _non_bracketed_contents($def_parsed_hash->{'class'})];
           } elsif ($def_command eq 'defivar'
                    or $def_command eq 'deftypeivar'
                    or $def_command eq 'deftypecv') {
             $index_entry = $self->gdt('{name} of {class}',
-                                     {'name' => $def_parsed_hash->{'name'},
-                                     'class' => $def_parsed_hash->{'class'}});
+                                      {'name' => $def_parsed_hash->{'name'},
+                                       'class' => $def_parsed_hash->{'class'}},
+                                      undef, $entry_language);
             $index_contents_normalized
               = [_non_bracketed_contents($def_parsed_hash->{'name'}),
                  { 'text' => ' of '},
@@ -336,7 +347,6 @@ sub complete_indices
       }
     }
   }
-  $self->{'documentlanguage'} = $save_lang;
 }
 
 
diff --git a/tp/Texinfo/XS/parsetexi/Parsetexi.pm 
b/tp/Texinfo/XS/parsetexi/Parsetexi.pm
index 332b2ee..d960edc 100644
--- a/tp/Texinfo/XS/parsetexi/Parsetexi.pm
+++ b/tp/Texinfo/XS/parsetexi/Parsetexi.pm
@@ -168,23 +168,35 @@ sub _get_error_registrar($)
   return $registrar, $configuration_informations;
 }
 
-sub get_parser_info {
+# done after all the parsings.  Part may not make much sense for 
parse_texi_line,
+# We nevertheless do it in any case to do the same as in ParserNonXS
+sub _set_errors_node_lists_labels_indices($)
+{
   my $self = shift;
 
-  my ($TARGETS, $INTL_XREFS, $FLOATS,
-      $INDEX_NAMES, $ERRORS, $GLOBAL_INFO, $GLOBAL_INFO2);
+  my $TARGETS = build_label_list ();
+  $self->{'targets'} = $TARGETS;
 
-  $TARGETS = build_label_list ();
-  $INTL_XREFS = build_internal_xref_list ();
-  $FLOATS = build_float_list ();
+    _get_errors ($self);
+  # Setup labels info and nodes list based on 'targets'
+  Texinfo::Convert::NodeNameNormalization::set_nodes_list_labels($self,
+                                           $self->{'registrar'}, $self);
 
-  $INDEX_NAMES = build_index_data ();
+  my $INDEX_NAMES = build_index_data ();
   $self->{'index_names'} = $INDEX_NAMES;
+  Texinfo::Translations::complete_indices ($self);
+}
+
+sub get_parser_info {
+  my $self = shift;
+
+  my ($INTL_XREFS, $FLOATS, $ERRORS, $GLOBAL_INFO, $GLOBAL_INFO2);
 
+  $INTL_XREFS = build_internal_xref_list ();
+  $FLOATS = build_float_list ();
   $GLOBAL_INFO = build_global_info ();
   $GLOBAL_INFO2 = build_global_info2 ();
 
-  $self->{'targets'} = $TARGETS;
   $self->{'internal_references'} = $INTL_XREFS;
   $self->{'floats'} = $FLOATS;
   $self->{'info'} = $GLOBAL_INFO;
@@ -204,12 +216,7 @@ sub get_parser_info {
     }
   }
 
-  _get_errors ($self);
-
-  # Setup labels info and nodes list based on 'targets'
-  Texinfo::Convert::NodeNameNormalization::set_nodes_list_labels($self,
-                                           $self->{'registrar'}, $self);
-  Texinfo::Translations::complete_indices ($self);
+  _set_errors_node_lists_labels_indices($self);
 }
 
 use File::Basename; # for fileparse
@@ -331,13 +338,6 @@ sub parse_texi_text($$;$$$$)
     my $INDEX_NAMES = build_index_data ();
     $self->{'index_names'} = $INDEX_NAMES;
 
-    for my $index (keys %$INDEX_NAMES) {
-      if ($INDEX_NAMES->{$index}->{'merged_in'}) {
-        $self->{'merged_indices'}-> {$index}
-          = $INDEX_NAMES->{$index}->{'merged_in'};
-      }
-    }
-
     get_parser_info($self);
     _associate_node_menus ($self, $tree);
 
@@ -360,17 +360,8 @@ sub parse_texi_line($$;$$$$)
     utf8::upgrade($text);
     parse_string($text);
     my $tree = build_texinfo_tree ();
-    _get_errors ($self);
 
-    # It is unclear if it is an error to have targets set in parse_texi_line.
-    # We nevertheless set targets and other infos to do the same as in
-    # ParserNonXS.
-    my $TARGETS = build_label_list ();
-    $self->{'targets'} = $TARGETS;
-
-    # Setup labels info and nodes list based on 'targets'
-    Texinfo::Convert::NodeNameNormalization::set_nodes_list_labels($self,
-                                                $self->{'registrar'}, $self);
+    _set_errors_node_lists_labels_indices($self);
 
     return $tree;
 }
@@ -380,11 +371,6 @@ sub indices_information($)
 {
   my $self = shift;
 
-  my $INDEX_NAMES;
-  if (!$self->{'index_names'}) {
-    $INDEX_NAMES = build_index_data ();
-    $self->{'index_names'} = $INDEX_NAMES;
-  }
   return $self->{'index_names'};
 }
 
diff --git a/tp/t/languages.t b/tp/t/languages.t
index c31cbae..5b34de8 100644
--- a/tp/t/languages.t
+++ b/tp/t/languages.t
@@ -14,6 +14,13 @@ my @test_cases = (
 @defivar AAA BBB CCC
 @end defivar
 '],
+# FIXME in HTML, the copying comment is a mix of fr and pt
+# FIXME it may be correct, but it is worth noting that the
+# @defivar in @insertcopying after @documentlanguage de appears
+# in german in the document, (and after @documentlanguage pt at
+# the end appears in portruguese) but the index entry is in fr, because
+# the index entry is set in the @copying block which is in
+# @documentlanguage fr.
 ['multiple',
 '@documentlanguage fr
 
@@ -27,6 +34,8 @@ my @test_cases = (
 @defivar fr BBB CCC
 @end defivar
 
+@documentlanguage de
+
 @insertcopying
 
 @documentlanguage pt
@@ -35,6 +44,8 @@ my @test_cases = (
 @end defivar
 
 @insertcopying
+
+@printindex vr
 '],
 ['appendix_translated',
 '@documentlanguage fr
diff --git a/tp/t/results/languages/multiple.pl 
b/tp/t/results/languages/multiple.pl
index 454c242..1ac335a 100644
--- a/tp/t/results/languages/multiple.pl
+++ b/tp/t/results/languages/multiple.pl
@@ -469,6 +469,41 @@ $result_trees{'multiple'} = {
         {
           'args' => [
             {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'de'
+                }
+              ],
+              'extra' => {
+                'spaces_after_argument' => '
+'
+              },
+              'parent' => {},
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'documentlanguage',
+          'extra' => {
+            'spaces_before_argument' => ' ',
+            'text_arg' => 'de'
+          },
+          'line_nr' => {
+            'file_name' => '',
+            'line_nr' => 13,
+            'macro' => ''
+          },
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
               'parent' => {},
               'text' => '
 ',
@@ -478,7 +513,7 @@ $result_trees{'multiple'} = {
           'cmdname' => 'insertcopying',
           'line_nr' => {
             'file_name' => '',
-            'line_nr' => 13,
+            'line_nr' => 15,
             'macro' => ''
           },
           'parent' => {}
@@ -513,7 +548,7 @@ $result_trees{'multiple'} = {
           },
           'line_nr' => {
             'file_name' => '',
-            'line_nr' => 15,
+            'line_nr' => 17,
             'macro' => ''
           },
           'parent' => {}
@@ -640,7 +675,7 @@ $result_trees{'multiple'} = {
               },
               'line_nr' => {
                 'file_name' => '',
-                'line_nr' => 17,
+                'line_nr' => 19,
                 'macro' => ''
               },
               'parent' => {},
@@ -671,7 +706,7 @@ $result_trees{'multiple'} = {
               },
               'line_nr' => {
                 'file_name' => '',
-                'line_nr' => 18,
+                'line_nr' => 20,
                 'macro' => ''
               },
               'parent' => {}
@@ -683,7 +718,7 @@ $result_trees{'multiple'} = {
           },
           'line_nr' => {
             'file_name' => '',
-            'line_nr' => 17,
+            'line_nr' => 19,
             'macro' => ''
           },
           'parent' => {}
@@ -706,13 +741,51 @@ $result_trees{'multiple'} = {
           'cmdname' => 'insertcopying',
           'line_nr' => {
             'file_name' => '',
-            'line_nr' => 20,
+            'line_nr' => 22,
+            'macro' => ''
+          },
+          'parent' => {}
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'args' => [
+            {
+              'contents' => [
+                {
+                  'parent' => {},
+                  'text' => 'vr'
+                }
+              ],
+              'extra' => {
+                'spaces_after_argument' => '
+'
+              },
+              'parent' => {},
+              'type' => 'line_arg'
+            }
+          ],
+          'cmdname' => 'printindex',
+          'extra' => {
+            'misc_args' => [
+              'vr'
+            ],
+            'spaces_before_argument' => ' '
+          },
+          'line_nr' => {
+            'file_name' => '',
+            'line_nr' => 24,
             'macro' => ''
           },
           'parent' => {}
         }
       ],
       'extra' => {
+        'isindex' => 1,
         'node_content' => [
           {}
         ],
@@ -800,39 +873,47 @@ 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[1]{'contents'}[1]{'parent'}
 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[1]{'extra'}{'end_command'} 
= $result_trees{'multiple'}{'contents'}[1]{'contents'}[1]{'contents'}[1];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[1]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[2]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[3]{'args'}[0];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[3]{'args'}[0]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[3];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[3]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[4]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[5]{'args'}[0];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[5]{'args'}[0]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[5];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[5]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[6]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[3]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[5]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[6]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[7]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'def_parsed_hash'}{'category'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'def_parsed_hash'}{'class'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[2];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'def_parsed_hash'}{'name'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[4];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'index_entry'}{'command'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'index_entry'}{'content'}[0]
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[4];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'index_entry'}{'content'}[2]
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[2];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'index_entry'}{'content_normalized'}[0]
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[4];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'index_entry'}{'content_normalized'}[2]
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'args'}[0]{'contents'}[2];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'extra'}{'index_entry'}{'node'}
 = $result_trees{'multiple'}{'contents'}[1];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[7];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[1]{'args'}[0];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[1];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[1]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[7];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'extra'}{'end_command'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'contents'}[1];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'args'}[0]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[7];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[7]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[8]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
-$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'args'}[0]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[1]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[3]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[5]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[6]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[7]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'def_parsed_hash'}{'category'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'def_parsed_hash'}{'class'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[2];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'def_parsed_hash'}{'name'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[4];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'index_entry'}{'command'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'index_entry'}{'content'}[0]
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[4];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'index_entry'}{'content'}[2]
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[2];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'index_entry'}{'content_normalized'}[0]
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[4];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'index_entry'}{'content_normalized'}[2]
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'args'}[0]{'contents'}[2];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'extra'}{'index_entry'}{'node'}
 = $result_trees{'multiple'}{'contents'}[1];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[9];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[1]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[1];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[1]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[9];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'extra'}{'end_command'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'contents'}[1];
 $result_trees{'multiple'}{'contents'}[1]{'contents'}[9]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[10]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[11]{'args'}[0]{'parent'} 
= $result_trees{'multiple'}{'contents'}[1]{'contents'}[11];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[11]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[12]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[13]{'args'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'multiple'}{'contents'}[1]{'contents'}[13]{'args'}[0];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[13]{'args'}[0]{'parent'} 
= $result_trees{'multiple'}{'contents'}[1]{'contents'}[13];
+$result_trees{'multiple'}{'contents'}[1]{'contents'}[13]{'parent'} = 
$result_trees{'multiple'}{'contents'}[1];
 $result_trees{'multiple'}{'contents'}[1]{'extra'}{'node_content'}[0] = 
$result_trees{'multiple'}{'contents'}[1]{'args'}[0]{'contents'}[0];
 
$result_trees{'multiple'}{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = $result_trees{'multiple'}{'contents'}[1]{'args'}[0]{'contents'}[0];
 $result_trees{'multiple'}{'contents'}[1]{'parent'} = $result_trees{'multiple'};
@@ -849,6 +930,8 @@ $result_texis{'multiple'} = '@documentlanguage fr
 @defivar fr BBB CCC
 @end defivar
 
+@documentlanguage de
+
 @insertcopying
 
 @documentlanguage pt
@@ -857,6 +940,8 @@ $result_texis{'multiple'} = '@documentlanguage fr
 @end defivar
 
 @insertcopying
+
+@printindex vr
 ';
 
 
@@ -867,8 +952,10 @@ Instance Variable of fr: BBB CCC
 
 
 
+
 Instance Variable of pt: BBB CCC
 
+
 ';
 
 $result_sectioning{'multiple'} = {};
@@ -876,6 +963,7 @@ $result_sectioning{'multiple'} = {};
 $result_nodes{'multiple'} = {
   'cmdname' => 'node',
   'extra' => {
+    'isindex' => 1,
     'normalized' => 'Top',
     'spaces_before_argument' => ' '
   }
@@ -884,6 +972,7 @@ $result_nodes{'multiple'} = {
 $result_menus{'multiple'} = {
   'cmdname' => 'node',
   'extra' => {
+    'isindex' => 1,
     'normalized' => 'Top',
     'spaces_before_argument' => ' '
   }
@@ -907,11 +996,18 @@ $result_indices_sort_strings{'multiple'} = {
 
 $result_converted{'plaintext'}->{'multiple'} = ' -- Variable d\'instance de fr 
: BBB CCC
 
- -- Variable d\'instance de copying : a b
+ -- Instanzvariable von copying: a b
 
  -- Variável de instância da pt: BBB CCC
 
  -- Variável de instância da copying: a b
+
+* Menu:
+
+* a de copying:                          Top.                   (line 6)
+* BBB da pt:                             Top.                   (line 4)
+* BBB de fr:                             Top.                   (line 0)
+
 ';
 
 
@@ -924,12 +1020,20 @@ File: ,  Node: Top,  Up: (dir)
 
  -- Variable d\'instance de fr : BBB CCC
 
- -- Variable d\'instance de copying : a b
+ -- Instanzvariable von copying: a b
 
  -- Variável de instância da pt: BBB CCC
 
  -- Variável de instância da copying: a b
 
+[index]
+* Menu:
+
+* a de copying:                          Top.                   (line 9)
+* BBB da pt:                             Top.                   (line 7)
+* BBB de fr:                             Top.                   (line 3)
+
+
 
 Tag Table:
 Node: Top69
@@ -948,7 +1052,7 @@ $result_converted{'html'}->{'multiple'} = '<!DOCTYPE html 
PUBLIC "-//W3C//DTD HT
 <!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<!-- Variável de instância da copying: a b -->
+<!-- Variable d\'instance da copying: a b -->
 <title>Documento Sem Nome</title>
 
 <meta name="description" content="Documento Sem Nome">
@@ -958,6 +1062,7 @@ $result_converted{'html'}->{'multiple'} = '<!DOCTYPE html 
PUBLIC "-//W3C//DTD HT
 <meta name="viewport" content="width=device-width,initial-scale=1">
 
 <link href="#Top" rel="start" title="Top">
+<link href="#Top" rel="index" title="Top">
 <style type="text/css">
 <!--
 a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
@@ -990,8 +1095,9 @@ ul.no-bullet {list-style: none}
 <dt id="index-BBB-of-fr"><span>Variable d\'instance de fr&nbsp;: 
<strong>BBB</strong> <em>CCC</em><a href=\'#index-BBB-of-fr\' 
class=\'copiable-anchor\'> &para;</a></span></dt>
 </dl>
 
+
 <dl class="def">
-<dt id="index-copying-a-of-copying"><span>Variable d\'instance de 
copying&nbsp;: <strong>a</strong> <em>b</em><a 
href=\'#index-copying-a-of-copying\' class=\'copiable-anchor\'> 
&para;</a></span></dt>
+<dt id="index-copying-a-of-copying"><span>Instanzvariable von copying: 
<strong>a</strong> <em>b</em><a href=\'#index-copying-a-of-copying\' 
class=\'copiable-anchor\'> &para;</a></span></dt>
 </dl>
 
 
@@ -1002,6 +1108,28 @@ ul.no-bullet {list-style: none}
 <dl class="def">
 <dt id="index-copying-a-of-copying"><span>Variável de instância da copying: 
<strong>a</strong> <em>b</em><a href=\'#index-copying-a-of-copying\' 
class=\'copiable-anchor\'> &para;</a></span></dt>
 </dl>
+
+<table><tr><th valign="top">Pular para: &nbsp; </th><td><a 
class="summary-letter" href="#Top_vr_letter-A"><b>A</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Top_vr_letter-B"><b>B</b></a>
+ &nbsp; 
+</td></tr></table>
+<table class="index-vr" border="0">
+<tr><td></td><th align="left">Entrada de &Iacute;ndice</th><td>&nbsp;</td><th 
align="left"> Se&ccedil;&atilde;o</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Top_vr_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-copying-a-of-copying"><code>a de 
copying</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Top">Top</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Top_vr_letter-B">B</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-BBB-of-pt"><code>BBB da 
pt</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Top">Top</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-BBB-of-fr"><code>BBB de 
fr</code></a>:</td><td>&nbsp;</td><td valign="top"><a 
href="#Top">Top</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Pular para: &nbsp; </th><td><a 
class="summary-letter" href="#Top_vr_letter-A"><b>A</b></a>
+ &nbsp; 
+<a class="summary-letter" href="#Top_vr_letter-B"><b>B</b></a>
+ &nbsp; 
+</td></tr></table>
 <hr>
 
 



reply via email to

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