[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> </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> </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>‘ ’.
+</p>
+<hr>
+</div>
+<div class="chapter-level-extent">
+<div class="nav-panel">
+<p>
+ </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>‘<code class="code"> </code>’.
+</p>
+
+</div>
+</div>
+
+
+
+</body>
+</html>
+';
+
+1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: Same empty expansion check in perl and XS parser,
Patrice Dumas <=