[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: * tp/Texinfo/Convert/HTML.pm (direction_string),
From: |
Patrice Dumas |
Subject: |
branch master updated: * tp/Texinfo/Convert/HTML.pm (direction_string), tp/Texinfo/XS/convert/convert_html.c (direction_string): do not access untranslated direction strings types for translated translations strings. |
Date: |
Sat, 17 Feb 2024 14:19:41 -0500 |
This is an automated email from the git hooks/post-receive script.
pertusus pushed a commit to branch master
in repository texinfo.
The following commit(s) were added to refs/heads/master by this push:
new d65d24bfd5 * tp/Texinfo/Convert/HTML.pm (direction_string),
tp/Texinfo/XS/convert/convert_html.c (direction_string): do not access
untranslated direction strings types for translated translations strings.
d65d24bfd5 is described below
commit d65d24bfd5dae25f854fcab08ccf9aed2b5f7adf
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Sat Feb 17 20:19:22 2024 +0100
* tp/Texinfo/Convert/HTML.pm (direction_string),
tp/Texinfo/XS/convert/convert_html.c (direction_string): do not
access untranslated direction strings types for translated
translations strings.
* tp/Texinfo/Convert/HTML.pm (%default_converted_directions_strings):
keep one empty direction string undef.
* tp/Texinfo/Convert/HTML.pm (_default_panel_button_dynamic_direction)
(_default_format_button, _default_format_special_body_about)
(conversion_initialization), tp/Texinfo/XS/convert/convert_html.c
(default_panel_button_dynamic_direction_internal)
(html_default_format_button, default_format_special_body_about),
tp/Texinfo/XS/convert/get_html_perl_info.c
(html_conversion_initialization_sv): handle undef direction strings.
* tp/Makefile.am (test_files), tp/Makefile.tres,
tp/t/init_files_tests.t ($direction_strings_test_text)
(directions_string_base, direction_strings_test_text)
(directions_string_undef_texi2html),
tp/t/init/directions_string_undef.pm: test directions strings undef.
---
ChangeLog | 24 +
tp/Makefile.am | 1 +
tp/Makefile.tres | 6 +
tp/Texinfo/Convert/HTML.pm | 97 ++-
tp/Texinfo/XS/convert/convert_html.c | 59 +-
tp/Texinfo/XS/convert/get_html_perl_info.c | 4 +-
tp/t/init/directions_string_undef.pm | 9 +
tp/t/init_files_tests.t | 31 +
.../init_files_tests/directions_string_base.pl | 740 +++++++++++++++++++++
.../directions_string_base/res_html/chap.html | 42 ++
.../directions_string_base/res_html/chap2.html | 46 ++
.../directions_string_base/res_html/index.html | 49 ++
.../directions_string_base/res_html/sec1.html | 41 ++
.../directions_string_base/res_html/sec2.html | 42 ++
.../directions_string_base/res_html/sec3.html | 40 ++
.../init_files_tests/directions_string_undef.pl | 740 +++++++++++++++++++++
.../directions_string_undef/res_html/chap.html | 42 ++
.../directions_string_undef/res_html/chap2.html | 46 ++
.../directions_string_undef/res_html/index.html | 49 ++
.../directions_string_undef/res_html/sec1.html | 41 ++
.../directions_string_undef/res_html/sec2.html | 42 ++
.../directions_string_undef/res_html/sec3.html | 40 ++
.../directions_string_undef_texi2html.pl | 740 +++++++++++++++++++++
.../directions_string_undef_texi2html.html | 285 ++++++++
24 files changed, 3201 insertions(+), 55 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 6b549c50e8..849d2e6493 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2024-02-17 Patrice Dumas <pertusus@free.fr>
+
+ * tp/Texinfo/Convert/HTML.pm (direction_string),
+ tp/Texinfo/XS/convert/convert_html.c (direction_string): do not
+ access untranslated direction strings types for translated
+ translations strings.
+
+ * tp/Texinfo/Convert/HTML.pm (%default_converted_directions_strings):
+ keep one empty direction string undef.
+
+ * tp/Texinfo/Convert/HTML.pm (_default_panel_button_dynamic_direction)
+ (_default_format_button, _default_format_special_body_about)
+ (conversion_initialization), tp/Texinfo/XS/convert/convert_html.c
+ (default_panel_button_dynamic_direction_internal)
+ (html_default_format_button, default_format_special_body_about),
+ tp/Texinfo/XS/convert/get_html_perl_info.c
+ (html_conversion_initialization_sv): handle undef direction strings.
+
+ * tp/Makefile.am (test_files), tp/Makefile.tres,
+ tp/t/init_files_tests.t ($direction_strings_test_text)
+ (directions_string_base, direction_strings_test_text)
+ (directions_string_undef_texi2html),
+ tp/t/init/directions_string_undef.pm: test directions strings undef.
+
2024-02-17 Patrice Dumas <pertusus@free.fr>
* tp/Texinfo/Convert/HTML.pm (%format_context_commands),
diff --git a/tp/Makefile.am b/tp/Makefile.am
index ce5d1e4855..93568bd533 100644
--- a/tp/Makefile.am
+++ b/tp/Makefile.am
@@ -177,6 +177,7 @@ test_files = \
t/init/command_translation_modified.init \
t/init/css_in_node_redirection_page.pm \
t/init/cvs.init \
+ t/init/directions_string_undef.pm \
t/init/icons.init \
t/init/ignore_and_comments_output.init \
t/init/l2h.init \
diff --git a/tp/Makefile.tres b/tp/Makefile.tres
index 0cff35b5f0..72ea987d21 100644
--- a/tp/Makefile.tres
+++ b/tp/Makefile.tres
@@ -1023,6 +1023,12 @@ test_files_generated_list =
$(test_tap_files_generated_list) \
t/results/init_files_tests/customize_special_element/res_html \
t/results/init_files_tests/customize_translations.pl \
t/results/init_files_tests/customize_translations/res_html \
+ t/results/init_files_tests/directions_string_base.pl \
+ t/results/init_files_tests/directions_string_base/res_html \
+ t/results/init_files_tests/directions_string_undef.pl \
+ t/results/init_files_tests/directions_string_undef/res_html \
+ t/results/init_files_tests/directions_string_undef_texi2html.pl \
+ t/results/init_files_tests/directions_string_undef_texi2html/res_html \
t/results/init_files_tests/documentation_examples.pl \
t/results/init_files_tests/documentation_examples/res_html \
t/results/init_files_tests/macro_defined_txiinternalvalue_in_translation.pl \
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index 360353f1c4..25bf784866 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -1254,7 +1254,8 @@ sub _internal_command_tree($$$)
} elsif ($command->{'cmdname'}
and ($command->{'cmdname'} eq 'node'
or $command->{'cmdname'} eq 'anchor')) {
- # FIXME is it possible not to have contents (nor args)?
+ # to be a target, the node or anchor cannot be empty (nor expand to
+ # spaces only), so argument is necessarily set.
$tree = {'type' => '_code',
'contents' => [$command->{'args'}->[0]]};
} elsif ($command->{'cmdname'} and ($command->{'cmdname'} eq 'float')) {
@@ -1459,14 +1460,14 @@ sub command_text($$;$)
} elsif ($command->{'type'}) {
$context_str .= $command->{'type'};
}
- # NOTE the multiple pass argument is not unicized, however the
- # external node manual label should in general be converted only
- # once, and even if it is converted more than once, it is unlikely
- # to contain @-commands which should better be converted only once.
+ # NOTE the multiple pass argument is not unicized, and no global
+ # context argument is given because the external node manual label
+ # should in general be converted only once.
+ # In addition, regarding multiple pass, it is unlikely for
+ # @-commands which should better be converted only once to be present.
my $result
= $self->convert_tree_new_formatting_context($tree,
$context_str,
- # FIXME check if $document_global_context argument would be needed?
'command_text-manual_content');
return $result;
}
@@ -1767,13 +1768,16 @@ sub direction_string($$$;$)
$direction =~ s/^FirstInFile//;
+ my $translated_directions_strings = $self->{'translated_direction_strings'};
+
if (not $self->{'directions_strings'}->{$string_type}->{$direction}
- or not exists($self->{'directions_strings'}->{$string_type}
+ or not exists($self->{'directions_strings'}->{$string_type}
->{$direction}->{$context})) {
$self->{'directions_strings'}->{$string_type}->{$direction} = {}
if not ($self->{'directions_strings'}->{$string_type}->{$direction});
- my $translated_directions_strings =
$self->{'translated_direction_strings'};
- if (defined($translated_directions_strings->{$string_type}
+ if ($translated_directions_strings->{$string_type}
+ and $translated_directions_strings->{$string_type}->{$direction}
+ and defined($translated_directions_strings->{$string_type}
->{$direction}->{'converted'})) {
# translate already converted direction strings
my $converted_directions
@@ -1795,7 +1799,9 @@ sub direction_string($$$;$)
$self->{'directions_strings'}->{$string_type}->{$direction}->{$context}
= undef;
}
- } elsif (defined($translated_directions_strings->{$string_type}
+ } elsif ($translated_directions_strings->{$string_type}
+ and $translated_directions_strings->{$string_type}->{$direction}
+ and defined($translated_directions_strings->{$string_type}
->{$direction}->{'to_convert'})) {
# translate direction strings that need to be translated and converted
my $translation_context = $direction;
@@ -1835,7 +1841,6 @@ sub direction_string($$$;$)
$self->{'directions_strings'}->{$string_type}->{$direction}->{$context}
= $result_string;
} else {
- # FIXME or ''
$self->{'directions_strings'}->{$string_type}->{$direction}->{$context}
= undef;
}
@@ -2592,7 +2597,9 @@ my %default_converted_directions_strings = (
'accesskey' =>
{
'Top', '',
- 'Contents', '',
+ # this direction is set undef to make sure that it does not break
+ # any code.
+ #'Contents', '',
'Overview', '',
'Index', '',
'This', '',
@@ -4238,7 +4245,9 @@ sub _default_panel_button_dynamic_direction($$;$$$)
$hyperlink = $node;
}
# i18n
- $result = $self->direction_string($direction, 'text').": $hyperlink";
+ my $direction_text = $self->direction_string($direction, 'text');
+ $direction_text = '' if (!defined($direction_text));
+ $result = $direction_text.": $hyperlink";
}
# 1 to communicate that a delimiter is needed for that button
return ($result, 1);
@@ -4431,13 +4440,15 @@ sub _default_format_button($$;$)
$self->from_element_direction($button, 'string'))
."</a>";
} else {
# use text
- $active = '[' . "<a href=\"$href\"${btitle}>".
- $self->direction_string($button, 'text')."</a>" . ']';
+ my $button_text = $self->direction_string($button, 'text');
+ $button_text = '' if (!defined($button_text));
+ $active = '['."<a href=\"$href\"${btitle}>".$button_text."</a>".']';
}
} else {
# use text
- $active = '[' . "<a href=\"$href\"${btitle}>".
- $self->direction_string($button, 'text')."</a>" . ']';
+ my $button_text = $self->direction_string($button, 'text');
+ $button_text = '' if (!defined($button_text));
+ $active = '['."<a href=\"$href\"${btitle}>".$button_text."</a>".']';
}
} else {
# button is passive
@@ -4456,10 +4467,14 @@ sub _default_format_button($$;$)
$self, $button_name_string, $passive_icon,
$self->from_element_direction($button, 'string'));
} else {
- $passive = '[' . $self->direction_string($button, 'text') . ']';
+ my $button_text = $self->direction_string($button, 'text');
+ $button_text = '' if (!defined($button_text));
+ $passive = '['.$button_text. ']';
}
} else {
- $passive = '[' . $self->direction_string($button, 'text') . ']';
+ my $button_text = $self->direction_string($button, 'text');
+ $button_text = '' if (!defined($button_text));
+ $passive = '['.$button_text. ']';
}
}
$need_delimiter = 0;
@@ -11406,20 +11421,29 @@ EOT
my $button_name_string
= $self->direction_string($direction, 'button', 'string');
# FIXME strip FirstInFile from $button to get active icon file?
- $about .=
- (($active_icons and $active_icons->{$direction}) ?
- &{$self->formatting_function('format_button_icon_img')}($self,
+ if ($active_icons and $active_icons->{$direction}) {
+ $about
+ .= &{$self->formatting_function('format_button_icon_img')}($self,
$button_name_string, $active_icons->{$direction})
- : ' [' . $self->direction_string($direction, 'text') . '] ');
+ } else {
+ my $direction_text = $self->direction_string($direction, 'text');
+ $direction_text = '' if (!defined($direction_text));
+ $about .= ' ['. $direction_text .'] ';
+ }
}
$about .= "</td>\n";
- my $button_name
- = $self->direction_string($direction, 'button');
+ my $direction_description
+ = $self->direction_string($direction, 'description');
+ $direction_description = '' if (!defined($direction_description));
+ my $direction_example = $self->direction_string($direction, 'example');
+ $direction_example = '' if (!defined($direction_example));
+ my $button_name = $self->direction_string($direction, 'button');
+ $button_name = '' if (!defined($button_name));
$about .=
' '.$self->html_attribute_class('td', ['name-direction-about']).'>'
- .$button_name."</td>
- <td>".$self->direction_string($direction, 'description')."</td>
- <td>".$self->direction_string($direction, 'example')."</td>
+ ."$button_name</td>
+ <td>$direction_description</td>
+ <td>$direction_example</td>
</tr>
";
}
@@ -11833,19 +11857,26 @@ sub conversion_initialization($;$)
$string_contexts
= $customized_direction_strings->{$string_type}
->{$direction}->{'converted'};
+ } else {
+ $string_contexts = {'normal' => undef };
}
} else {
my $string
= $default_converted_directions_strings{$string_type}->{$direction};
- $string_contexts
- = {'normal' => $string};
+ $string_contexts = {'normal' => $string};
}
$string_contexts->{'string'} = $string_contexts->{'normal'}
if (not defined($string_contexts->{'string'}));
foreach my $context (keys(%$string_contexts)) {
- $self->{'directions_strings'}->{$string_type}->{$direction}->{$context}
- = $self->substitute_html_non_breaking_space(
-
$string_contexts->{$context});
+ if (defined($string_contexts->{$context})) {
+ $self->{'directions_strings'}->{$string_type}
+ ->{$direction}->{$context}
+ = $self->substitute_html_non_breaking_space(
+ $string_contexts->{$context});
+ } else {
+ $self->{'directions_strings'}->{$string_type}
+ ->{$direction}->{$context} = undef;
+ }
}
}
}
diff --git a/tp/Texinfo/XS/convert/convert_html.c
b/tp/Texinfo/XS/convert/convert_html.c
index 9b7c3a593c..280def38b4 100644
--- a/tp/Texinfo/XS/convert/convert_html.c
+++ b/tp/Texinfo/XS/convert/convert_html.c
@@ -2868,7 +2868,8 @@ direction_string (CONVERTER *self, int direction,
else if (direction > NON_SPECIAL_DIRECTIONS_NR - 1)
direction -= FIRSTINFILE_NR;
- if (!self->directions_strings[string_type][direction][context])
+ if (!self->directions_strings[string_type][direction][context]
+ && string_type < TDS_TRANSLATED_MAX_NR)
{
HTML_DIRECTION_STRING_TRANSLATED *dir_translated
= &self->translated_direction_strings[string_type][direction];
@@ -7320,7 +7321,9 @@ default_panel_button_dynamic_direction_internal
(CONVERTER *self,
if (node && node[strspn (node, whitespace_chars)] != '\0')
{
- char *text = direction_string (self, direction, TDS_type_text, 0);
+ const char *text = direction_string (self, direction, TDS_type_text, 0);
+ if (!text)
+ text = "";
if (href && strlen (href))
{
char *hyperlink
@@ -7491,8 +7494,11 @@ html_default_format_button (CONVERTER *self,
}
else
{
- formatted_button->active = strdup (direction_string (self,
- button->direction, TDS_type_text, 0));
+ const char *button_text = direction_string (self,
+ button->direction, TDS_type_text, 0);
+ if (!button_text)
+ button_text = "";
+ formatted_button->active = strdup (button_text);
}
formatted_button->need_delimiter = 0;
}
@@ -7541,8 +7547,8 @@ html_default_format_button (CONVERTER *self,
text_append_n (&active_text, ">", 1);
if (active_icon)
{
- char *button_name_string = direction_string (self,
- button->direction, TDS_type_button,
+ const char *button_name_string = direction_string (self,
+ button->direction, TDS_type_button,
TDS_context_string);
char *icon_name = from_element_direction (self,
button->direction,
@@ -7557,9 +7563,12 @@ html_default_format_button (CONVERTER *self,
free (icon_img);
}
else
- text_append (&active_text,
- direction_string (self, button->direction,
- TDS_type_text, 0));
+ {
+ const char *button_text_string = direction_string (self,
+ button->direction, TDS_type_text, 0);
+ if (button_text_string)
+ text_append (&active_text, button_text_string);
+ }
text_append_n (&active_text, "</a>", 4);
@@ -7604,10 +7613,11 @@ html_default_format_button (CONVERTER *self,
}
else
{
+ const char *button_text_string = direction_string (self,
+ button->direction, TDS_type_text, 0);
text_append_n (&passive_text, "[", 1);
- text_append (&passive_text,
- direction_string (self, button->direction,
- TDS_type_text, 0));
+ if (button_text_string)
+ text_append (&passive_text, button_text_string);
text_append_n (&passive_text, "]", 1);
}
formatted_button->passive = passive_text.text;
@@ -15537,6 +15547,9 @@ default_format_special_body_about (CONVERTER *self,
const BUTTON_SPECIFICATION *button = &buttons->list[i];
char * attribute_class;
int direction = -1;
+ const char *button_name;
+ const char *button_description;
+ const char *button_example;
if (button->type == BST_direction_info)
direction = button->button_info->direction;
@@ -15573,9 +15586,11 @@ default_format_special_body_about (CONVERTER *self,
}
else
{
+ const char *button_text = direction_string (self, direction,
+ TDS_type_text, 0);
text_append_n (result, " [", 2);
- text_append (result, direction_string (self, direction,
- TDS_type_text, 0));
+ if (button_text)
+ text_append (result, button_text);
text_append_n (result, "] ", 2);
}
}
@@ -15586,14 +15601,18 @@ default_format_special_body_about (CONVERTER *self,
free (attribute_class);
text_append_n (result, ">", 1);
- text_append (result, direction_string (self, direction,
- TDS_type_button, 0));
+ button_name = direction_string (self, direction, TDS_type_button, 0);
+ if (button_name)
+ text_append (result, button_name);
text_append_n (result, "</td>\n <td>", 14);
- text_append (result, direction_string (self, direction,
- TDS_type_description, 0));
+ button_description = direction_string (self, direction,
+ TDS_type_description, 0);
+ if (button_description)
+ text_append (result, button_description);
text_append_n (result, "</td>\n <td>", 14);
- text_append (result, direction_string (self, direction,
- TDS_type_example, 0));
+ button_example = direction_string (self, direction, TDS_type_example, 0);
+ if (button_example)
+ text_append (result, button_example);
text_append_n (result, "</td>\n </tr>\n", 14);
}
diff --git a/tp/Texinfo/XS/convert/get_html_perl_info.c
b/tp/Texinfo/XS/convert/get_html_perl_info.c
index e99072e7fe..b627d80180 100644
--- a/tp/Texinfo/XS/convert/get_html_perl_info.c
+++ b/tp/Texinfo/XS/convert/get_html_perl_info.c
@@ -966,6 +966,7 @@ html_conversion_initialization_sv (SV *converter_sv,
CONVERTER *converter)
int i;
SV **direction_sv = 0;
HV *direction_hv = 0;
+ const char *type_name = direction_string_type_names[DS_type];
converter->directions_strings[DS_type] = (char ***)
malloc (nr_string_directions * sizeof (char **));
@@ -974,7 +975,6 @@ html_conversion_initialization_sv (SV *converter_sv,
CONVERTER *converter)
if (directions_strings_sv)
{
- const char *type_name = direction_string_type_names[DS_type];
direction_sv = hv_fetch (directions_strings_hv, type_name,
strlen (type_name), 0);
if (direction_sv)
@@ -1016,7 +1016,7 @@ html_conversion_initialization_sv (SV *converter_sv,
CONVERTER *converter)
SV **value_sv = hv_fetch (context_hv, context_name,
strlen (context_name), 0);
- if (value_sv)
+ if (value_sv && SvOK (*value_sv))
{
converter->directions_strings[DS_type][i][j]
= strdup ((char *) SvPVutf8_nolen (*value_sv));
diff --git a/tp/t/init/directions_string_undef.pm
b/tp/t/init/directions_string_undef.pm
new file mode 100644
index 0000000000..79729b7894
--- /dev/null
+++ b/tp/t/init/directions_string_undef.pm
@@ -0,0 +1,9 @@
+
+
+foreach my $direction ('Next', 'NodeNext', 'Up', 'NodeUp') {
+ foreach my $type ('accesskey', 'button', 'description', 'example',
+ 'rel', 'text') {
+ texinfo_register_direction_string_info ($direction, $type, undef, undef);
+ }
+}
+
diff --git a/tp/t/init_files_tests.t b/tp/t/init_files_tests.t
index 3e4276abd5..c319e5d0ad 100644
--- a/tp/t/init_files_tests.t
+++ b/tp/t/init_files_tests.t
@@ -30,6 +30,25 @@ pt @error{}.
}],
);
+my $direction_strings_test_text = '@node Top
+@top top
+
+@node chap
+@chapter Chap
+
+@node chap2
+@chapter Chap 2
+
+@node sec1
+@section Sec 1
+
+@node sec2
+@section Sec 2
+
+@node sec3
+@section Sec 3
+';
+
my @file_tests = (
['customize_translations',
'
@@ -155,6 +174,18 @@ DOC
@end deftypeop
', {'init_files' => ['translation_in_parser_in_translation.pm']}],
+# usefull to setup a base for comparison with the next test
+['directions_string_base',
+$direction_strings_test_text,],
+['directions_string_undef',
+$direction_strings_test_text,
+{'init_files' => ['directions_string_undef.pm']},],
+# test texi2html style buttons and directions strings undef
+['directions_string_undef_texi2html',
+$direction_strings_test_text,
+{'init_files' => ['directions_string_undef.pm']},
+{'TEXI2HTML' => 1},
+],
);
foreach my $test (@test_cases) {
diff --git a/tp/t/results/init_files_tests/directions_string_base.pl
b/tp/t/results/init_files_tests/directions_string_base.pl
new file mode 100644
index 0000000000..f6c7191c15
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base.pl
@@ -0,0 +1,740 @@
+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{'directions_string_base'} = {
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'type' => 'preamble_before_content'
+ }
+ ],
+ 'type' => 'before_node_section'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Top'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'Top'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 1
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'top'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'top',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {},
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 2
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'chap'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'chap'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 4
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Chap'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 5
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'chap2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'chap2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Chap 2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 8
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec1'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 10
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 1'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2.1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 11
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 13
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2.2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 14
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec3'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec3'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 16
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 3'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.3'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 17
+ }
+ }
+ ],
+ 'type' => 'document_root'
+};
+
+$result_texis{'directions_string_base'} = '@node Top
+@top top
+
+@node chap
+@chapter Chap
+
+@node chap2
+@chapter Chap 2
+
+@node sec1
+@section Sec 1
+
+@node sec2
+@section Sec 2
+
+@node sec3
+@section Sec 3
+';
+
+
+$result_texts{'directions_string_base'} = 'top
+***
+
+1 Chap
+******
+
+2 Chap 2
+********
+
+2.1 Sec 1
+=========
+
+2.2 Sec 2
+=========
+
+2.3 Sec 3
+=========
+';
+
+$result_sectioning{'directions_string_base'} = {
+ 'extra' => {
+ 'section_childs' => [
+ {
+ 'cmdname' => 'top',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ 'section_childs' => [
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'chap'
+ }
+ },
+ 'section_directions' => {
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '1',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ },
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'chap2'
+ }
+ },
+ 'section_childs' => [
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec1'
+ }
+ },
+ 'section_directions' => {
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.1'
+ }
+ },
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec2'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.2'
+ }
+ },
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec3'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.3'
+ }
+ }
+ ],
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '2',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ }
+ ],
+ 'section_level' => 0,
+ 'sectioning_root' => {},
+ 'toplevel_directions' => {}
+ }
+ }
+ ],
+ 'section_level' => -1
+ }
+};
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
= $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
= $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
= $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
= $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
= $result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_base'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
= $result_sectioning{'directions_string_base'};
+
+$result_nodes{'directions_string_base'} = [
+ {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'top',
+ 'extra' => {}
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '1'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '2'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'chap2'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'chap'
+ }
+ }
+ },
+ 'normalized' => 'Top'
+ }
+ },
+ {},
+ {},
+ {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.1'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.2'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.3'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'sec3'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'sec2'
+ }
+ },
+ 'up' => {}
+ },
+ 'normalized' => 'sec1'
+ }
+ },
+ {},
+ {}
+];
+$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'directions_string_base'}[0];
+$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'directions_string_base'}[0];
+$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'directions_string_base'}[0];
+$result_nodes{'directions_string_base'}[1] =
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[2] =
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
=
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'directions_string_base'}[3];
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
=
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'up'} =
$result_nodes{'directions_string_base'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[4] =
$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_base'}[5] =
$result_nodes{'directions_string_base'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'directions_string_base'} = [
+ {
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'chap'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'chap2'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec1'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec2'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec3'
+ }
+ }
+];
+
+$result_errors{'directions_string_base'} = [];
+
+
+$result_floats{'directions_string_base'} = {};
+
+
+1;
diff --git
a/tp/t/results/init_files_tests/directions_string_base/res_html/chap.html
b/tp/t/results/init_files_tests/directions_string_base/res_html/chap.html
new file mode 100644
index 0000000000..90fdf7e92e
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/chap.html
@@ -0,0 +1,42 @@
+<!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>chap (top)</title>
+
+<meta name="description" content="chap (top)">
+<meta name="keywords" content="chap (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="index.html" rel="up" title="Top">
+<link href="chap2.html" rel="next" title="chap2">
+<link href="index.html" rel="prev" title="Top">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="chap">
+<div class="nav-panel">
+<p>
+Next: <a href="chap2.html" accesskey="n" rel="next">Chap 2</a>, Previous: <a
href="index.html" accesskey="p" rel="prev">top</a>, Up: <a href="index.html"
accesskey="u" rel="up">top</a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="Chap"><span>1 Chap<a class="copiable-link"
href="#Chap"> ¶</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_base/res_html/chap2.html
b/tp/t/results/init_files_tests/directions_string_base/res_html/chap2.html
new file mode 100644
index 0000000000..a97d173a4b
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/chap2.html
@@ -0,0 +1,46 @@
+<!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>chap2 (top)</title>
+
+<meta name="description" content="chap2 (top)">
+<meta name="keywords" content="chap2 (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="index.html" rel="up" title="Top">
+<link href="chap.html" rel="prev" title="chap">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="chap2">
+<div class="nav-panel">
+<p>
+Previous: <a href="chap.html" accesskey="p" rel="prev">Chap</a>, Up: <a
href="index.html" accesskey="u" rel="up">top</a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="Chap-2"><span>2 Chap 2<a class="copiable-link"
href="#Chap-2"> ¶</a></span></h2>
+
+<ul class="mini-toc">
+<li><a href="sec1.html" accesskey="1">Sec 1</a></li>
+<li><a href="sec2.html" accesskey="2">Sec 2</a></li>
+<li><a href="sec3.html" accesskey="3">Sec 3</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_base/res_html/index.html
b/tp/t/results/init_files_tests/directions_string_base/res_html/index.html
new file mode 100644
index 0000000000..b2207dcdaf
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/index.html
@@ -0,0 +1,49 @@
+<!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 (top)</title>
+
+<meta name="description" content="Top (top)">
+<meta name="keywords" content="Top (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">
+<link href="chap.html" rel="next" title="chap">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+Next: <a href="chap.html" accesskey="n" rel="next">Chap</a> </p>
+</div>
+<hr>
+<h1 class="top" id="top"><span>top<a class="copiable-link" href="#top">
¶</a></span></h1>
+
+<ul class="mini-toc">
+<li><a href="chap.html" accesskey="1">Chap</a></li>
+<li><a href="chap2.html" accesskey="2">Chap 2</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="chap.html" accesskey="n" rel="next">Chap</a> </p>
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_base/res_html/sec1.html
b/tp/t/results/init_files_tests/directions_string_base/res_html/sec1.html
new file mode 100644
index 0000000000..bea459f936
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/sec1.html
@@ -0,0 +1,41 @@
+<!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>sec1 (top)</title>
+
+<meta name="description" content="sec1 (top)">
+<meta name="keywords" content="sec1 (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="chap2.html" rel="up" title="chap2">
+<link href="sec2.html" rel="next" title="sec2">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="sec1">
+<div class="nav-panel">
+<p>
+Next: <a href="sec2.html" accesskey="n" rel="next">Sec 2</a>, Up: <a
href="chap2.html" accesskey="u" rel="up">Chap 2</a> </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-1"><span>2.1 Sec 1<a class="copiable-link"
href="#Sec-1"> ¶</a></span></h3>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_base/res_html/sec2.html
b/tp/t/results/init_files_tests/directions_string_base/res_html/sec2.html
new file mode 100644
index 0000000000..11c7146ab5
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/sec2.html
@@ -0,0 +1,42 @@
+<!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>sec2 (top)</title>
+
+<meta name="description" content="sec2 (top)">
+<meta name="keywords" content="sec2 (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="chap2.html" rel="up" title="chap2">
+<link href="sec3.html" rel="next" title="sec3">
+<link href="sec1.html" rel="prev" title="sec1">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="sec2">
+<div class="nav-panel">
+<p>
+Next: <a href="sec3.html" accesskey="n" rel="next">Sec 3</a>, Previous: <a
href="sec1.html" accesskey="p" rel="prev">Sec 1</a>, Up: <a href="chap2.html"
accesskey="u" rel="up">Chap 2</a> </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-2"><span>2.2 Sec 2<a class="copiable-link"
href="#Sec-2"> ¶</a></span></h3>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_base/res_html/sec3.html
b/tp/t/results/init_files_tests/directions_string_base/res_html/sec3.html
new file mode 100644
index 0000000000..9e3a91435e
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_base/res_html/sec3.html
@@ -0,0 +1,40 @@
+<!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>sec3 (top)</title>
+
+<meta name="description" content="sec3 (top)">
+<meta name="keywords" content="sec3 (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="chap2.html" rel="up" title="chap2">
+<link href="sec2.html" rel="prev" title="sec2">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="sec3">
+<div class="nav-panel">
+<p>
+Previous: <a href="sec2.html" accesskey="p" rel="prev">Sec 2</a>, Up: <a
href="chap2.html" accesskey="u" rel="up">Chap 2</a> </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-3"><span>2.3 Sec 3<a class="copiable-link"
href="#Sec-3"> ¶</a></span></h3>
+</div>
+
+
+
+</body>
+</html>
diff --git a/tp/t/results/init_files_tests/directions_string_undef.pl
b/tp/t/results/init_files_tests/directions_string_undef.pl
new file mode 100644
index 0000000000..49067d14dc
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef.pl
@@ -0,0 +1,740 @@
+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{'directions_string_undef'} = {
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'type' => 'preamble_before_content'
+ }
+ ],
+ 'type' => 'before_node_section'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Top'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'Top'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 1
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'top'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'top',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {},
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 2
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'chap'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'chap'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 4
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Chap'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 5
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'chap2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'chap2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Chap 2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 8
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec1'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 10
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 1'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2.1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 11
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 13
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2.2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 14
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec3'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec3'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 16
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 3'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.3'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 17
+ }
+ }
+ ],
+ 'type' => 'document_root'
+};
+
+$result_texis{'directions_string_undef'} = '@node Top
+@top top
+
+@node chap
+@chapter Chap
+
+@node chap2
+@chapter Chap 2
+
+@node sec1
+@section Sec 1
+
+@node sec2
+@section Sec 2
+
+@node sec3
+@section Sec 3
+';
+
+
+$result_texts{'directions_string_undef'} = 'top
+***
+
+1 Chap
+******
+
+2 Chap 2
+********
+
+2.1 Sec 1
+=========
+
+2.2 Sec 2
+=========
+
+2.3 Sec 3
+=========
+';
+
+$result_sectioning{'directions_string_undef'} = {
+ 'extra' => {
+ 'section_childs' => [
+ {
+ 'cmdname' => 'top',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ 'section_childs' => [
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'chap'
+ }
+ },
+ 'section_directions' => {
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '1',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ },
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'chap2'
+ }
+ },
+ 'section_childs' => [
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec1'
+ }
+ },
+ 'section_directions' => {
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.1'
+ }
+ },
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec2'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.2'
+ }
+ },
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec3'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.3'
+ }
+ }
+ ],
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '2',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ }
+ ],
+ 'section_level' => 0,
+ 'sectioning_root' => {},
+ 'toplevel_directions' => {}
+ }
+ }
+ ],
+ 'section_level' => -1
+ }
+};
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
= $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
= $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
= $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
= $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
= $result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
= $result_sectioning{'directions_string_undef'};
+
+$result_nodes{'directions_string_undef'} = [
+ {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'top',
+ 'extra' => {}
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '1'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '2'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'chap2'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'chap'
+ }
+ }
+ },
+ 'normalized' => 'Top'
+ }
+ },
+ {},
+ {},
+ {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.1'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.2'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.3'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'sec3'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'sec2'
+ }
+ },
+ 'up' => {}
+ },
+ 'normalized' => 'sec1'
+ }
+ },
+ {},
+ {}
+];
+$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'directions_string_undef'}[0];
+$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'directions_string_undef'}[0];
+$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'directions_string_undef'}[0];
+$result_nodes{'directions_string_undef'}[1] =
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[2] =
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
=
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'directions_string_undef'}[3];
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
=
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'up'}
=
$result_nodes{'directions_string_undef'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[4] =
$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef'}[5] =
$result_nodes{'directions_string_undef'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'directions_string_undef'} = [
+ {
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'chap'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'chap2'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec1'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec2'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec3'
+ }
+ }
+];
+
+$result_errors{'directions_string_undef'} = [];
+
+
+$result_floats{'directions_string_undef'} = {};
+
+
+1;
diff --git
a/tp/t/results/init_files_tests/directions_string_undef/res_html/chap.html
b/tp/t/results/init_files_tests/directions_string_undef/res_html/chap.html
new file mode 100644
index 0000000000..e62baea349
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/chap.html
@@ -0,0 +1,42 @@
+<!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>chap (top)</title>
+
+<meta name="description" content="chap (top)">
+<meta name="keywords" content="chap (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="index.html" title="Top">
+<link href="chap2.html" title="chap2">
+<link href="index.html" rel="prev" title="Top">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="chap">
+<div class="nav-panel">
+<p>
+: <a href="chap2.html">Chap 2</a>, Previous: <a href="index.html"
accesskey="p" rel="prev">top</a>, : <a href="index.html">top</a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="Chap"><span>1 Chap<a class="copiable-link"
href="#Chap"> ¶</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_undef/res_html/chap2.html
b/tp/t/results/init_files_tests/directions_string_undef/res_html/chap2.html
new file mode 100644
index 0000000000..0b2385e850
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/chap2.html
@@ -0,0 +1,46 @@
+<!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>chap2 (top)</title>
+
+<meta name="description" content="chap2 (top)">
+<meta name="keywords" content="chap2 (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="index.html" title="Top">
+<link href="chap.html" rel="prev" title="chap">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="chapter-level-extent" id="chap2">
+<div class="nav-panel">
+<p>
+Previous: <a href="chap.html" accesskey="p" rel="prev">Chap</a>, : <a
href="index.html">top</a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="Chap-2"><span>2 Chap 2<a class="copiable-link"
href="#Chap-2"> ¶</a></span></h2>
+
+<ul class="mini-toc">
+<li><a href="sec1.html" accesskey="1">Sec 1</a></li>
+<li><a href="sec2.html" accesskey="2">Sec 2</a></li>
+<li><a href="sec3.html" accesskey="3">Sec 3</a></li>
+</ul>
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_undef/res_html/index.html
b/tp/t/results/init_files_tests/directions_string_undef/res_html/index.html
new file mode 100644
index 0000000000..51ed98f569
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/index.html
@@ -0,0 +1,49 @@
+<!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 (top)</title>
+
+<meta name="description" content="Top (top)">
+<meta name="keywords" content="Top (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">
+<link href="chap.html" title="chap">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+: <a href="chap.html">Chap</a> </p>
+</div>
+<hr>
+<h1 class="top" id="top"><span>top<a class="copiable-link" href="#top">
¶</a></span></h1>
+
+<ul class="mini-toc">
+<li><a href="chap.html" accesskey="1">Chap</a></li>
+<li><a href="chap2.html" accesskey="2">Chap 2</a></li>
+</ul>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+: <a href="chap.html">Chap</a> </p>
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_undef/res_html/sec1.html
b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec1.html
new file mode 100644
index 0000000000..22e41d0b45
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec1.html
@@ -0,0 +1,41 @@
+<!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>sec1 (top)</title>
+
+<meta name="description" content="sec1 (top)">
+<meta name="keywords" content="sec1 (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="chap2.html" title="chap2">
+<link href="sec2.html" title="sec2">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="sec1">
+<div class="nav-panel">
+<p>
+: <a href="sec2.html">Sec 2</a>, : <a href="chap2.html">Chap 2</a> </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-1"><span>2.1 Sec 1<a class="copiable-link"
href="#Sec-1"> ¶</a></span></h3>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_undef/res_html/sec2.html
b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec2.html
new file mode 100644
index 0000000000..6f7a08344c
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec2.html
@@ -0,0 +1,42 @@
+<!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>sec2 (top)</title>
+
+<meta name="description" content="sec2 (top)">
+<meta name="keywords" content="sec2 (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="chap2.html" title="chap2">
+<link href="sec3.html" title="sec3">
+<link href="sec1.html" rel="prev" title="sec1">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="sec2">
+<div class="nav-panel">
+<p>
+: <a href="sec3.html">Sec 3</a>, Previous: <a href="sec1.html" accesskey="p"
rel="prev">Sec 1</a>, : <a href="chap2.html">Chap 2</a> </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-2"><span>2.2 Sec 2<a class="copiable-link"
href="#Sec-2"> ¶</a></span></h3>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/init_files_tests/directions_string_undef/res_html/sec3.html
b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec3.html
new file mode 100644
index 0000000000..57ca387445
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef/res_html/sec3.html
@@ -0,0 +1,40 @@
+<!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>sec3 (top)</title>
+
+<meta name="description" content="sec3 (top)">
+<meta name="keywords" content="sec3 (top)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
+<link href="index.html" rel="start" title="Top">
+<link href="chap2.html" title="chap2">
+<link href="sec2.html" rel="prev" title="sec2">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="section-level-extent" id="sec3">
+<div class="nav-panel">
+<p>
+Previous: <a href="sec2.html" accesskey="p" rel="prev">Sec 2</a>, : <a
href="chap2.html">Chap 2</a> </p>
+</div>
+<hr>
+<h3 class="section" id="Sec-3"><span>2.3 Sec 3<a class="copiable-link"
href="#Sec-3"> ¶</a></span></h3>
+</div>
+
+
+
+</body>
+</html>
diff --git a/tp/t/results/init_files_tests/directions_string_undef_texi2html.pl
b/tp/t/results/init_files_tests/directions_string_undef_texi2html.pl
new file mode 100644
index 0000000000..df06b15a1d
--- /dev/null
+++ b/tp/t/results/init_files_tests/directions_string_undef_texi2html.pl
@@ -0,0 +1,740 @@
+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{'directions_string_undef_texi2html'} = {
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'type' => 'preamble_before_content'
+ }
+ ],
+ 'type' => 'before_node_section'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Top'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'Top'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 1
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'top'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'top',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {},
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 2
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'chap'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'chap'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 4
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Chap'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 5
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'chap2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'chap2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Chap 2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 8
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec1'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 10
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 1'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2.1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 11
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 13
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 2'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2.2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 14
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'sec3'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'normalized' => 'sec3'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 16
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Sec 3'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.3'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 17
+ }
+ }
+ ],
+ 'type' => 'document_root'
+};
+
+$result_texis{'directions_string_undef_texi2html'} = '@node Top
+@top top
+
+@node chap
+@chapter Chap
+
+@node chap2
+@chapter Chap 2
+
+@node sec1
+@section Sec 1
+
+@node sec2
+@section Sec 2
+
+@node sec3
+@section Sec 3
+';
+
+
+$result_texts{'directions_string_undef_texi2html'} = 'top
+***
+
+1 Chap
+******
+
+2 Chap 2
+********
+
+2.1 Sec 1
+=========
+
+2.2 Sec 2
+=========
+
+2.3 Sec 3
+=========
+';
+
+$result_sectioning{'directions_string_undef_texi2html'} = {
+ 'extra' => {
+ 'section_childs' => [
+ {
+ 'cmdname' => 'top',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ 'section_childs' => [
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'chap'
+ }
+ },
+ 'section_directions' => {
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '1',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ },
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'chap2'
+ }
+ },
+ 'section_childs' => [
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec1'
+ }
+ },
+ 'section_directions' => {
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.1'
+ }
+ },
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec2'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.2'
+ }
+ },
+ {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'sec3'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 2,
+ 'section_number' => '2.3'
+ }
+ }
+ ],
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '2',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ }
+ ],
+ 'section_level' => 0,
+ 'sectioning_root' => {},
+ 'toplevel_directions' => {}
+ }
+ }
+ ],
+ 'section_level' => -1
+ }
+};
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
=
$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'directions_string_undef_texi2html'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
= $result_sectioning{'directions_string_undef_texi2html'};
+
+$result_nodes{'directions_string_undef_texi2html'} = [
+ {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'top',
+ 'extra' => {}
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '1'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '2'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'chap2'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'chap'
+ }
+ }
+ },
+ 'normalized' => 'Top'
+ }
+ },
+ {},
+ {},
+ {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.1'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.2'
+ }
+ },
+ 'node_directions' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'section',
+ 'extra' => {
+ 'section_number' => '2.3'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'sec3'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'sec2'
+ }
+ },
+ 'up' => {}
+ },
+ 'normalized' => 'sec1'
+ }
+ },
+ {},
+ {}
+];
+$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'directions_string_undef_texi2html'}[0];
+$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'directions_string_undef_texi2html'}[0];
+$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'directions_string_undef_texi2html'}[0];
+$result_nodes{'directions_string_undef_texi2html'}[1] =
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[2] =
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
=
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'directions_string_undef_texi2html'}[3];
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
=
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'up'}
=
$result_nodes{'directions_string_undef_texi2html'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[4] =
$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'directions_string_undef_texi2html'}[5] =
$result_nodes{'directions_string_undef_texi2html'}[3]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'directions_string_undef_texi2html'} = [
+ {
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'chap'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'chap2'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec1'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec2'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'sec3'
+ }
+ }
+];
+
+$result_errors{'directions_string_undef_texi2html'} = [];
+
+
+$result_floats{'directions_string_undef_texi2html'} = {};
+
+
+1;
diff --git
a/tp/t/results/init_files_tests/directions_string_undef_texi2html/res_html/directions_string_undef_texi2html.html
b/tp/t/results/init_files_tests/directions_string_undef_texi2html/res_html/directions_string_undef_texi2html.html
new file mode 100644
index 0000000000..685089b2aa
--- /dev/null
+++
b/tp/t/results/init_files_tests/directions_string_undef_texi2html/res_html/directions_string_undef_texi2html.html
@@ -0,0 +1,285 @@
+<!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">
+
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+pre.menu-comment-preformatted {font-family: serif}
+span.program-in-footer {font-size: smaller}
+span:hover a.copiable-link {visibility: visible}
+td.button-direction-about {text-align:center}
+td.menu-entry-description {vertical-align: top}
+td.menu-entry-destination {vertical-align: top}
+td.name-direction-about {text-align:center}
+th.menu-comment {text-align:left}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[ < ]</td>
+<td>[<a href="#chap" title="Next section in reading order"> > </a>]</td>
+<td> </td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="top" id="top"><span>top<a class="copiable-link" href="#top">
¶</a></span></h1>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td class="menu-entry-destination"><a href="#chap">1
Chap</a></td><td> </td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#chap2">2 Chap
2</a></td><td> </td><td class="menu-entry-description">
+</td></tr>
+<tr><th class="menu-comment" colspan="3"><pre
class="menu-comment-preformatted">
+
+</pre></th></tr><tr><th class="menu-comment" colspan="3"><pre
class="menu-comment-preformatted"> — The Detailed Node Listing —
+
+Chap 2
+
+</pre></th></tr><tr><td class="menu-entry-destination"><a href="#sec1">2.1 Sec
1</a></td><td> </td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#sec2">2.2 Sec
2</a></td><td> </td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#sec3">2.3 Sec
3</a></td><td> </td><td class="menu-entry-description">
+</td></tr>
+</table>
+<hr style="height: 6px;">
+<div class="chapter-level-extent" id="chap">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#Top" title="Beginning of this chapter or previous chapter">
<< </a>]</td>
+<td>[<a href="#Top" title="Previous section in reading order"> < </a>]</td>
+<td>[<a href="#Top"></a>]</td>
+<td>[<a href="#chap2" title="Next section in reading order"> > </a>]</td>
+<td>[<a href="#chap2" title="Next chapter"> >> </a>]</td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter" id="Chap"><span>1 Chap<a class="copiable-link"
href="#Chap"> ¶</a></span></h1>
+
+<hr>
+</div>
+<div class="chapter-level-extent" id="chap2">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#chap" title="Beginning of this chapter or previous
chapter"> << </a>]</td>
+<td>[<a href="#chap" title="Previous section in reading order"> < </a>]</td>
+<td>[<a href="#Top"></a>]</td>
+<td>[<a href="#sec1" title="Next section in reading order"> > </a>]</td>
+<td>[ >> ]</td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="chapter" id="Chap-2"><span>2 Chap 2<a class="copiable-link"
href="#Chap-2"> ¶</a></span></h1>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td class="menu-entry-destination"><a href="#sec1">2.1 Sec
1</a></td><td> </td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#sec2">2.2 Sec
2</a></td><td> </td><td class="menu-entry-description">
+</td></tr>
+<tr><td class="menu-entry-destination"><a href="#sec3">2.3 Sec
3</a></td><td> </td><td class="menu-entry-description">
+</td></tr>
+</table>
+<hr>
+<div class="section-level-extent" id="sec1">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#chap2" title="Beginning of this chapter or previous
chapter"> << </a>]</td>
+<td>[<a href="#chap2" title="Previous section in reading order"> <
</a>]</td>
+<td>[<a href="#chap2"></a>]</td>
+<td>[<a href="#sec2" title="Next section in reading order"> > </a>]</td>
+<td>[ >> ]</td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section" id="Sec-1"><span>2.1 Sec 1<a class="copiable-link"
href="#Sec-1"> ¶</a></span></h2>
+
+<hr>
+</div>
+<div class="section-level-extent" id="sec2">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#chap2" title="Beginning of this chapter or previous
chapter"> << </a>]</td>
+<td>[<a href="#sec1" title="Previous section in reading order"> < </a>]</td>
+<td>[<a href="#chap2"></a>]</td>
+<td>[<a href="#sec3" title="Next section in reading order"> > </a>]</td>
+<td>[ >> ]</td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section" id="Sec-2"><span>2.2 Sec 2<a class="copiable-link"
href="#Sec-2"> ¶</a></span></h2>
+
+<hr>
+</div>
+<div class="section-level-extent" id="sec3">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#chap2" title="Beginning of this chapter or previous
chapter"> << </a>]</td>
+<td>[<a href="#sec2" title="Previous section in reading order"> < </a>]</td>
+<td>[<a href="#chap2"></a>]</td>
+<td>[ > ]</td>
+<td>[ >> ]</td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td> </td>
+<td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h2 class="section" id="Sec-3"><span>2.3 Sec 3<a class="copiable-link"
href="#Sec-3"> ¶</a></span></h2>
+<hr style="height: 6px;">
+</div>
+</div>
+</div>
+<div class="element-about" id="SEC_About">
+<table class="nav-panel" cellpadding="1" cellspacing="1" border="0">
+<tr><td>[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
+<td>[Contents]</td>
+<td>[Index]</td>
+<td>[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
+</tr></table>
+<h1 class="about-heading">About This Document</h1>
+
+<p>
+ This document was generated on <em class="emph">a sunny day</em>.
+</p>
+<p>
+ The buttons in the navigation panels have the following meaning:
+</p>
+<table border="1">
+ <tr>
+ <th> Button </th>
+ <th> Name </th>
+ <th> Go to </th>
+ <th> From 1.2.3 go to</th>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [ << ] </td>
+ <td class="name-direction-about">FastBack</td>
+ <td>Beginning of this chapter or previous chapter</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [ < ] </td>
+ <td class="name-direction-about">Back</td>
+ <td>Previous section in reading order</td>
+ <td>1.2.2</td>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [] </td>
+ <td class="name-direction-about"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [ > ] </td>
+ <td class="name-direction-about">Forward</td>
+ <td>Next section in reading order</td>
+ <td>1.2.4</td>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [ >> ] </td>
+ <td class="name-direction-about">FastForward</td>
+ <td>Next chapter</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [Top] </td>
+ <td class="name-direction-about">Top</td>
+ <td>Cover (top) of document</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [Contents] </td>
+ <td class="name-direction-about">Contents</td>
+ <td>Table of contents</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [Index] </td>
+ <td class="name-direction-about">Index</td>
+ <td>Index</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td class="button-direction-about"> [ ? ] </td>
+ <td class="name-direction-about">About</td>
+ <td>About (help)</td>
+ <td> </td>
+ </tr>
+</table>
+
+<p>
+ where the <strong class="strong"> Example </strong> assumes that the current
position is at <strong class="strong"> Subsubsection One-Two-Three </strong> of
a document of the following structure:
+</p>
+
+<ul>
+ <li> 1. Section One
+ <ul>
+ <li>1.1 Subsection One-One
+ <ul>
+ <li>...</li>
+ </ul>
+ </li>
+ <li>1.2 Subsection One-Two
+ <ul>
+ <li>1.2.1 Subsubsection One-Two-One</li>
+ <li>1.2.2 Subsubsection One-Two-Two</li>
+ <li>1.2.3 Subsubsection One-Two-Three
+ <strong><== Current Position </strong></li>
+ <li>1.2.4 Subsubsection One-Two-Four</li>
+ </ul>
+ </li>
+ <li>1.3 Subsection One-Three
+ <ul>
+ <li>...</li>
+ </ul>
+ </li>
+ <li>1.4 Subsection One-Four</li>
+ </ul>
+ </li>
+</ul>
+</div><hr>
+<p>
+ <span class="program-in-footer">This document was generated on <em
class="emph">a sunny day</em>.</span>
+</p>
+
+
+</body>
+</html>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: * tp/Texinfo/Convert/HTML.pm (direction_string), tp/Texinfo/XS/convert/convert_html.c (direction_string): do not access untranslated direction strings types for translated translations strings.,
Patrice Dumas <=