texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: Same empty expansion check in perl and XS parser


From: Patrice Dumas
Subject: branch master updated: Same empty expansion check in perl and XS parser
Date: Tue, 31 May 2022 19:15:46 -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 9b232da568 Same empty expansion check in perl and XS parser
9b232da568 is described below

commit 9b232da568db5ed2d8aa25ed0276baf13a2e088c
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Wed Jun 1 01:15:32 2022 +0200

    Same empty expansion check in perl and XS parser
    
    * tp/Texinfo/ParserNonXS.pm (_check_empty_expansion, _parse_texi):
    new function _check_empty_expansion based on XS parser function.
---
 ChangeLog                                          |   7 +
 tp/Makefile.am                                     |   1 +
 tp/Texinfo/ParserNonXS.pm                          |  41 +-
 tp/Texinfo/XS/parsetexi/separator.c                |   3 -
 tp/t/30sectioning.t                                |   2 +
 .../reference_to_only_special_spaces_node.texi     |  16 +
 .../reference_to_only_special_spaces_node.pl       | 811 +++++++++++++++++++++
 7 files changed, 868 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 352d4a3517..b1c138b508 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2022-06-01  Patrice Dumas  <pertusus@free.fr>
+
+       Same empty expansion check in perl and XS parser
+
+       * tp/Texinfo/ParserNonXS.pm (_check_empty_expansion, _parse_texi):
+       new function _check_empty_expansion based on XS parser function.
+
 2022-06-01  Patrice Dumas  <pertusus@free.fr>
 
        * tp/Texinfo/Convert/Info.pm (output): add missing second
diff --git a/tp/Makefile.am b/tp/Makefile.am
index c98f3c0bff..d5cd05ebad 100644
--- a/tp/Makefile.am
+++ b/tp/Makefile.am
@@ -226,6 +226,7 @@ test_files = \
  t/input_files/punctuation_small_case_accents_latin1.texi \
  t/input_files/punctuation_small_case_accents_us_ascii.texi \
  t/input_files/punctuation_small_case_accents_utf8.texi \
+ t/input_files/reference_to_only_special_spaces_node.texi \
  t/input_files/sample_utf8.texi \
  t/input_files/sectioning.texi \
  t/input_files/simplest.texi \
diff --git a/tp/Texinfo/ParserNonXS.pm b/tp/Texinfo/ParserNonXS.pm
index 43898ad310..dd60f1eda9 100644
--- a/tp/Texinfo/ParserNonXS.pm
+++ b/tp/Texinfo/ParserNonXS.pm
@@ -73,7 +73,7 @@ use Texinfo::Report;
 # in error messages, and for macro body expansion
 use Texinfo::Convert::Texinfo;
 
-# to normalize node name, anchor, float arg, and first *ref argument.
+# to call set_nodes_list_labels
 use Texinfo::Convert::NodeNameNormalization;
 
 # to complete indices translations.
@@ -2911,7 +2911,7 @@ sub _end_line($$$)
         my $arg = shift @{$menu_entry->{'args'}};
         if (defined($arg->{'text'})) {
           $current = _merge_text($self, $current, $arg->{'text'});
-        } else {
+        } elsif ($arg->{'contents'}) {
           while (@{$arg->{'contents'}}) {
             my $content = shift @{$arg->{'contents'}};
             if (defined($content->{'text'})) {
@@ -3656,6 +3656,33 @@ sub _check_node_label($$$$)
   return _check_empty_node($self, $parsed_node, $command, $source_info);
 }
 
+# Return 1 if an element is all whitespace.
+# Note that this function isn't completely reliable because it
+# doesn't look deep into the element tree.
+# Consistent with XS parser
+sub _check_empty_expansion($)
+{
+  my $current = shift;
+
+  foreach my $content (@$current) {
+    if (!(($content->{'cmdname'}
+           and ($content->{'cmdname'} eq ' ' or $content->{'cmdname'} eq "\t"
+                or $content->{'cmdname'} eq "\n"
+                or $content->{'cmdname'} eq 'c'
+                or $content->{'cmdname'} eq 'comment'
+                or $content->{'cmdname'} eq ':'))
+           or ($content->{'type'}
+               and ($content->{'type'} eq 'empty_spaces_before_argument'
+                    or $content->{'type'} eq 'spaces_at_end'))
+           or (defined($content->{'text'}) and $content->{'text'} !~ /\S/))) {
+        #or (not $content->{'cmdname'} and not $content->{'type'}
+        #    and defined($content->{'text'}) and $content->{'text'} eq '')
+      return 0;
+    }
+  }
+  return 1;
+}
+
 sub _register_extra_menu_entry_information($$;$)
 {
   my ($self, $current, $source_info) = @_;
@@ -5336,10 +5363,7 @@ sub _parse_texi($$$)
                   }
                 }
                 if (defined($args[1])) {
-                  my $normalized_cross_ref_name
-                    = Texinfo::Convert::NodeNameNormalization::normalize_node(
-                                                      {'contents' => 
$args[1]});
-                  if ($normalized_cross_ref_name !~ /[^-]/) {
+                  if (_check_empty_expansion($args[1])) {
                     $self->_line_warn(sprintf(__(
                     "in \@%s empty cross reference name after expansion `%s'"),
                           $closed_command,
@@ -5349,10 +5373,7 @@ sub _parse_texi($$$)
                   }
                 }
                 if ($closed_command ne 'inforef' and defined($args[2])) {
-                  my $normalized_cross_ref_title =
-                    Texinfo::Convert::NodeNameNormalization::normalize_node(
-                                                     {'contents' => $args[2]});
-                  if ($normalized_cross_ref_title !~ /[^-]/) {
+                  if (_check_empty_expansion($args[2])) {
                     $self->_line_warn(sprintf(__(
                      "in \@%s empty cross reference title after expansion 
`%s'"),
                           $closed_command,
diff --git a/tp/Texinfo/XS/parsetexi/separator.c 
b/tp/Texinfo/XS/parsetexi/separator.c
index 49f5e3114c..e47866ce20 100644
--- a/tp/Texinfo/XS/parsetexi/separator.c
+++ b/tp/Texinfo/XS/parsetexi/separator.c
@@ -207,9 +207,6 @@ handle_open_brace (ELEMENT *current, char **line_inout)
 /* Return 1 if an element is all whitespace.
    Note that this function isn't completely reliable because it
    doesn't look deep into the element tree.
-   In the perl code it calls 
-   Texinfo::Convert::NodeNameNormalization::normalize_node,
-   and checks that the result isn't all hyphens.
  */
 int
 check_empty_expansion (ELEMENT *e)
diff --git a/tp/t/30sectioning.t b/tp/t/30sectioning.t
index 3498492504..712f8dd140 100644
--- a/tp/t/30sectioning.t
+++ b/tp/t/30sectioning.t
@@ -617,6 +617,8 @@ undef, {'test_file' => 'only_special_spaces_node.texi',
 ['in_menu_only_special_spaces_node',
 undef, {'test_file' => 'in_menu_only_special_spaces_node.texi',
         'skip' => ($] < 5.014) ? 'Perl too old: /a regex flag needed' : undef, 
}],
+['reference_to_only_special_spaces_node',
+undef, {'test_file' => 'reference_to_only_special_spaces_node.texi'}],
 ['double_node_anchor_float',
 '@node node1
 
diff --git a/tp/t/input_files/reference_to_only_special_spaces_node.texi 
b/tp/t/input_files/reference_to_only_special_spaces_node.texi
new file mode 100644
index 0000000000..5b1889eb38
--- /dev/null
+++ b/tp/t/input_files/reference_to_only_special_spaces_node.texi
@@ -0,0 +1,16 @@
+
+@node Top
+@top top
+
+@node    
+@chapter EN QUAD| | EM QUAD| | EN SPACE| |
+
+@ref{    ,    }.
+
+@node @code{   }
+@chapter @code{EN QUAD| | EM QUAD| | EN SPACE| |}
+
+@ref{@code{   }, @code{   }}.
+
+
+@bye
diff --git a/tp/t/results/sectioning/reference_to_only_special_spaces_node.pl 
b/tp/t/results/sectioning/reference_to_only_special_spaces_node.pl
new file mode 100644
index 0000000000..a96705c36f
--- /dev/null
+++ b/tp/t/results/sectioning/reference_to_only_special_spaces_node.pl
@@ -0,0 +1,811 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors 
+   %result_indices %result_sectioning %result_nodes %result_menus
+   %result_floats %result_converted %result_converted_errors 
+   %result_elements %result_directions_text %result_indices_sort_strings);
+
+use utf8;
+
+$result_trees{'reference_to_only_special_spaces_node'} = {
+  'contents' => [
+    {
+      'contents' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => '
+',
+              'type' => 'text_before_beginning'
+            }
+          ],
+          'parent' => {},
+          'type' => 'preamble_before_beginning'
+        },
+        {
+          'contents' => [],
+          'parent' => {},
+          'type' => 'preamble_before_content'
+        }
+      ],
+      'parent' => {},
+      'type' => 'before_node_section'
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'Top'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [],
+      'extra' => {
+        'node_content' => [
+          {}
+        ],
+        'nodes_manuals' => [
+          {
+            'node_content' => [
+              {}
+            ],
+            'normalized' => 'Top'
+          }
+        ],
+        'normalized' => 'Top',
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => 'reference_to_only_special_spaces_node.texi',
+        'line_nr' => 2,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => 'top'
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'top',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => 'reference_to_only_special_spaces_node.texi',
+        'line_nr' => 3,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => "\x{2000}\x{2001}\x{2002}"
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [],
+      'extra' => {
+        'nodes_manuals' => [
+          {
+            'node_content' => [
+              {}
+            ],
+            'normalized' => '-'
+          }
+        ],
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => 'reference_to_only_special_spaces_node.texi',
+        'line_nr' => 5,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'parent' => {},
+              'text' => "EN QUAD|\x{2000}| EM QUAD|\x{2001}| EN 
SPACE|\x{2002}|"
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => "\x{2000}\x{2001}\x{2002}"
+                    }
+                  ],
+                  'extra' => {
+                    'spaces_before_argument' => ' '
+                  },
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                },
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => "\x{2000}\x{2001}\x{2002}"
+                    }
+                  ],
+                  'extra' => {
+                    'spaces_before_argument' => ' '
+                  },
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'ref',
+              'contents' => [],
+              'extra' => {
+                'node_argument' => {
+                  'node_content' => [
+                    {}
+                  ],
+                  'normalized' => '-'
+                }
+              },
+              'parent' => {},
+              'source_info' => {
+                'file_name' => 'reference_to_only_special_spaces_node.texi',
+                'line_nr' => 8,
+                'macro' => ''
+              }
+            },
+            {
+              'parent' => {},
+              'text' => '.
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => 'reference_to_only_special_spaces_node.texi',
+        'line_nr' => 6,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => "\x{2000}\x{2001}\x{2002}"
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'code',
+              'contents' => [],
+              'parent' => {},
+              'source_info' => {
+                'file_name' => 'reference_to_only_special_spaces_node.texi',
+                'line_nr' => 10,
+                'macro' => ''
+              }
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'node',
+      'contents' => [],
+      'extra' => {
+        'nodes_manuals' => [
+          {
+            'node_content' => [
+              {}
+            ],
+            'normalized' => '-'
+          }
+        ],
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => 'reference_to_only_special_spaces_node.texi',
+        'line_nr' => 10,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'parent' => {},
+                      'text' => "EN QUAD|\x{2000}| EM QUAD|\x{2001}| EN 
SPACE|\x{2002}|"
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'code',
+              'contents' => [],
+              'parent' => {},
+              'source_info' => {
+                'file_name' => 'reference_to_only_special_spaces_node.texi',
+                'line_nr' => 11,
+                'macro' => ''
+              }
+            }
+          ],
+          'extra' => {
+            'spaces_after_argument' => '
+'
+          },
+          'parent' => {},
+          'type' => 'line_arg'
+        }
+      ],
+      'cmdname' => 'chapter',
+      'contents' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'contents' => [
+            {
+              'args' => [
+                {
+                  'contents' => [
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'parent' => {},
+                              'text' => "\x{2000}\x{2001}\x{2002}"
+                            }
+                          ],
+                          'parent' => {},
+                          'type' => 'brace_command_arg'
+                        }
+                      ],
+                      'cmdname' => 'code',
+                      'contents' => [],
+                      'parent' => {},
+                      'source_info' => {
+                        'file_name' => 
'reference_to_only_special_spaces_node.texi',
+                        'line_nr' => 13,
+                        'macro' => ''
+                      }
+                    }
+                  ],
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                },
+                {
+                  'contents' => [
+                    {
+                      'args' => [
+                        {
+                          'contents' => [
+                            {
+                              'parent' => {},
+                              'text' => "\x{2000}\x{2001}\x{2002}"
+                            }
+                          ],
+                          'parent' => {},
+                          'type' => 'brace_command_arg'
+                        }
+                      ],
+                      'cmdname' => 'code',
+                      'contents' => [],
+                      'parent' => {},
+                      'source_info' => {
+                        'file_name' => 
'reference_to_only_special_spaces_node.texi',
+                        'line_nr' => 13,
+                        'macro' => ''
+                      }
+                    }
+                  ],
+                  'extra' => {
+                    'spaces_before_argument' => ' '
+                  },
+                  'parent' => {},
+                  'type' => 'brace_command_arg'
+                }
+              ],
+              'cmdname' => 'ref',
+              'contents' => [],
+              'extra' => {
+                'node_argument' => {
+                  'node_content' => [
+                    {}
+                  ],
+                  'normalized' => '-'
+                }
+              },
+              'parent' => {},
+              'source_info' => {
+                'file_name' => 'reference_to_only_special_spaces_node.texi',
+                'line_nr' => 13,
+                'macro' => ''
+              }
+            },
+            {
+              'parent' => {},
+              'text' => '.
+'
+            }
+          ],
+          'parent' => {},
+          'type' => 'paragraph'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        },
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'empty_line'
+        }
+      ],
+      'extra' => {
+        'spaces_before_argument' => ' '
+      },
+      'parent' => {},
+      'source_info' => {
+        'file_name' => 'reference_to_only_special_spaces_node.texi',
+        'line_nr' => 11,
+        'macro' => ''
+      }
+    },
+    {
+      'args' => [
+        {
+          'parent' => {},
+          'text' => '
+',
+          'type' => 'misc_arg'
+        }
+      ],
+      'cmdname' => 'bye',
+      'parent' => {}
+    }
+  ],
+  'type' => 'document_root'
+};
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[0]{'contents'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[0]{'contents'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[0]{'contents'}[1]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'};
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1]{'args'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1]{'extra'}{'node_content'}[0]
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[1]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'};
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[2]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[2]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[2]{'args'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[2];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[2]{'contents'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[2];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[2]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'};
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[3]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[3]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[3]{'args'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[3];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[3]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[3]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[3]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'};
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'args'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'args'}[1];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'args'}[1]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'extra'}{'node_argument'}{'node_content'}[0]
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'contents'}[1]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[1]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'contents'}[2]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[4]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'};
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'args'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'args'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'args'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'extra'}{'nodes_manuals'}[0]{'node_content'}[0]
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[5]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'};
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'args'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'args'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'args'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[1]{'contents'}[0]{'args'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[1]{'contents'}[0]{'args'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[1]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[1];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[1]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'extra'}{'node_argument'}{'node_content'}[0]
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'args'}[0]{'contents'}[0];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[0]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'contents'}[1]{'parent'}
 = 
$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[1]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[2]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'contents'}[3]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[6]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'};
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[7]{'args'}[0]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'}{'contents'}[7];
+$result_trees{'reference_to_only_special_spaces_node'}{'contents'}[7]{'parent'}
 = $result_trees{'reference_to_only_special_spaces_node'};
+
+$result_texis{'reference_to_only_special_spaces_node'} = '
+@node Top
+@top top
+
+@node    
+@chapter EN QUAD| | EM QUAD| | EN SPACE| |
+
+@ref{    ,    }.
+
+@node @code{   }
+@chapter @code{EN QUAD| | EM QUAD| | EN SPACE| |}
+
+@ref{@code{   }, @code{   }}.
+
+
+@bye
+';
+
+
+$result_texts{'reference_to_only_special_spaces_node'} = 'top
+***
+
+1 EN QUAD| | EM QUAD| | EN SPACE| |
+***********************************
+
+   .
+
+2 EN QUAD| | EM QUAD| | EN SPACE| |
+***********************************
+
+   .
+
+
+';
+
+$result_sectioning{'reference_to_only_special_spaces_node'} = {
+  'structure' => {
+    'section_childs' => [
+      {
+        'cmdname' => 'top',
+        'extra' => {
+          'associated_node' => {
+            'cmdname' => 'node',
+            'extra' => {
+              'normalized' => 'Top'
+            },
+            'structure' => {}
+          }
+        },
+        'structure' => {
+          'section_childs' => [
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {},
+                  'structure' => {}
+                }
+              },
+              'structure' => {
+                'section_level' => 1,
+                'section_number' => 1,
+                'section_up' => {},
+                'toplevel_prev' => {},
+                'toplevel_up' => {}
+              }
+            },
+            {
+              'cmdname' => 'chapter',
+              'extra' => {
+                'associated_node' => {
+                  'cmdname' => 'node',
+                  'extra' => {}
+                }
+              },
+              'structure' => {
+                'section_level' => 1,
+                'section_number' => 2,
+                'section_prev' => {},
+                'section_up' => {},
+                'toplevel_prev' => {},
+                'toplevel_up' => {}
+              }
+            }
+          ],
+          'section_level' => 0,
+          'section_up' => {}
+        }
+      }
+    ],
+    'section_level' => -1
+  }
+};
+$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[0]{'structure'}{'section_up'}
 = 
$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[0]{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[0]{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[1]{'structure'}{'section_prev'}
 = 
$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[0];
+$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[1]{'structure'}{'section_up'}
 = 
$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[1]{'structure'}{'toplevel_prev'}
 = 
$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[0];
+$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_childs'}[1]{'structure'}{'toplevel_up'}
 = 
$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0];
+$result_sectioning{'reference_to_only_special_spaces_node'}{'structure'}{'section_childs'}[0]{'structure'}{'section_up'}
 = $result_sectioning{'reference_to_only_special_spaces_node'};
+
+$result_nodes{'reference_to_only_special_spaces_node'} = {
+  'cmdname' => 'node',
+  'extra' => {
+    'associated_section' => {
+      'cmdname' => 'top',
+      'extra' => {},
+      'structure' => {}
+    },
+    'normalized' => 'Top'
+  },
+  'structure' => {
+    'node_next' => {
+      'cmdname' => 'node',
+      'extra' => {
+        'associated_section' => {
+          'cmdname' => 'chapter',
+          'extra' => {},
+          'structure' => {
+            'section_number' => 1
+          }
+        }
+      },
+      'structure' => {
+        'node_prev' => {}
+      }
+    }
+  }
+};
+$result_nodes{'reference_to_only_special_spaces_node'}{'structure'}{'node_next'}{'structure'}{'node_prev'}
 = $result_nodes{'reference_to_only_special_spaces_node'};
+
+$result_menus{'reference_to_only_special_spaces_node'} = {
+  'cmdname' => 'node',
+  'extra' => {
+    'normalized' => 'Top'
+  },
+  'structure' => {}
+};
+
+$result_errors{'reference_to_only_special_spaces_node'} = [
+  {
+    'error_line' => "empty node name after expansion `\x{2000}\x{2001}\x{2002}'
+",
+    'file_name' => 'reference_to_only_special_spaces_node.texi',
+    'line_nr' => 5,
+    'macro' => '',
+    'text' => "empty node name after expansion `\x{2000}\x{2001}\x{2002}'",
+    'type' => 'error'
+  },
+  {
+    'error_line' => "empty node name after expansion 
`\@code{\x{2000}\x{2001}\x{2002}}'
+",
+    'file_name' => 'reference_to_only_special_spaces_node.texi',
+    'line_nr' => 10,
+    'macro' => '',
+    'text' => "empty node name after expansion 
`\@code{\x{2000}\x{2001}\x{2002}}'",
+    'type' => 'error'
+  },
+  {
+    'error_line' => "\@ref reference to nonexistent node 
`\x{2000}\x{2001}\x{2002}'
+",
+    'file_name' => 'reference_to_only_special_spaces_node.texi',
+    'line_nr' => 8,
+    'macro' => '',
+    'text' => "\@ref reference to nonexistent node `\x{2000}\x{2001}\x{2002}'",
+    'type' => 'error'
+  },
+  {
+    'error_line' => "\@ref reference to nonexistent node 
`\@code{\x{2000}\x{2001}\x{2002}}'
+",
+    'file_name' => 'reference_to_only_special_spaces_node.texi',
+    'line_nr' => 13,
+    'macro' => '',
+    'text' => "\@ref reference to nonexistent node 
`\@code{\x{2000}\x{2001}\x{2002}}'",
+    'type' => 'error'
+  }
+];
+
+
+$result_floats{'reference_to_only_special_spaces_node'} = {};
+
+
+
+$result_converted{'info'}->{'reference_to_only_special_spaces_node'} = 'This 
is , produced from reference_to_only_special_spaces_node.texi.
+
+
+File: ,  Node: Top,  Next: ,  Up: (dir)
+
+top
+***
+
+* Menu:
+
+1 EN QUAD| | EM QUAD| | EN SPACE| |
+***********************************
+
+*note    :    .
+
+2 ‘EN QUAD| | EM QUAD| | EN SPACE| |’
+*************************************
+
+*note ‘   ’:    .
+
+
+
+Tag Table:
+Node: Top69
+
+End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
+';
+
+
+$result_converted{'html'}->{'reference_to_only_special_spaces_node'} = 
'<!DOCTYPE html>
+<html>
+<!-- Created by texinfo, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>top</title>
+
+<meta name="description" content="top">
+<meta name="keywords" content="top">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="#Top" rel="start" title="Top">
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+Next: <a href="" accesskey="n" rel="next">EN QUAD| | EM QUAD| | EN SPACE| 
|</a> &nbsp; </p>
+</div>
+<h1 class="top" id="top">top</h1>
+
+<ul class="mini-toc">
+<li>EN QUAD| | EM QUAD| | EN SPACE| |</li>
+<li><code class="code">EN QUAD| | EM QUAD| | EN SPACE| |</code></li>
+</ul>
+<hr>
+<div class="chapter-level-extent">
+<div class="nav-panel">
+<p>
+Previous: <a href="#Top" accesskey="p" rel="prev">top</a> &nbsp; </p>
+</div>
+<h2 class="chapter" 
id="EN-QUAD_007c-_007c-EM-QUAD_007c-_007c-EN-SPACE_007c-_007c">1 EN QUAD| | EM 
QUAD| | EN SPACE| |</h2>
+
+<p>&lsquo;   &rsquo;.
+</p>
+<hr>
+</div>
+<div class="chapter-level-extent">
+<div class="nav-panel">
+<p>
+ &nbsp; </p>
+</div>
+<h2 class="chapter" 
id="EN-QUAD_007c-_007c-EM-QUAD_007c-_007c-EN-SPACE_007c-_007c-1">2 <code 
class="code">EN QUAD| | EM QUAD| | EN SPACE| |</code></h2>
+
+<p>&lsquo;<code class="code">   </code>&rsquo;.
+</p>
+
+</div>
+</div>
+
+
+
+</body>
+</html>
+';
+
+1;



reply via email to

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