[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Patrice Dumas |
Date: |
Thu, 26 Sep 2024 17:15:29 -0400 (EDT) |
branch: master
commit 340c1cf174e4facdd67b354c3934eb5d52e0ef9d
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Thu Sep 26 23:15:16 2024 +0200
* tp/Texinfo/Convert/HTML.pm (_formatted_nodedescription_nr)
(_convert_menu_entry_type): add _formatted_nodedescription_nr based on
_convert_menu_entry_type code.
* tp/Texinfo/Convert/HTML.pm (command_description, _translate_names)
(_file_header_information), tp/Texinfo/XS/convert/convert_html.c
(html_command_description, file_header_information)
(reset_html_targets_list, html_translate_names),
tp/Texinfo/XS/main/converter_types.h (HTML_TARGET): add
command_description to get the description associated to a node or
sectioning command node. Use it to set description if there is no
documentdescription (and to set keywords). Inspired by Benjamin
Kalish report.
* tp/Texinfo/Convert/HTML.pm (%XS_conversion_overrides),
tp/Texinfo/XS/convert/ConvertXS.xs (html_command_description): XS
override for html_command_description.
* tp/Makefile.tres, tp/t/html_tests.t
($nodedescription_description_texinfo)
(nodedescription_description)
(nodedescription_description_no_use_nodes): test nodedescription used
as meta description.
---
ChangeLog | 26 +
tp/Makefile.tres | 4 +
tp/Texinfo/Convert/HTML.pm | 138 +++-
tp/Texinfo/XS/convert/ConvertXS.xs | 40 +
tp/Texinfo/XS/convert/convert_html.c | 150 +++-
tp/Texinfo/XS/convert/convert_html.h | 2 +
tp/Texinfo/XS/main/converter_types.h | 1 +
tp/t/html_tests.t | 35 +
.../html_tests/nodedescription_description.pl | 838 +++++++++++++++++++++
.../res_html/index.html | 53 ++
.../res_html/other.html | 41 +
.../nodedescription_description/res_html/titi.html | 45 ++
.../nodedescription_description/res_html/toto.html | 44 ++
.../nodedescription_description_no_use_nodes.pl | 838 +++++++++++++++++++++
.../res_html/index.html | 44 ++
.../res_html/other.html | 41 +
.../res_html/titi.html | 45 ++
.../res_html/toto.html | 44 ++
18 files changed, 2413 insertions(+), 16 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d2601cba18..92cf181bd9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2024-09-26 Patrice Dumas <pertusus@free.fr>
+
+ * tp/Texinfo/Convert/HTML.pm (_formatted_nodedescription_nr)
+ (_convert_menu_entry_type): add _formatted_nodedescription_nr based on
+ _convert_menu_entry_type code.
+
+ * tp/Texinfo/Convert/HTML.pm (command_description, _translate_names)
+ (_file_header_information), tp/Texinfo/XS/convert/convert_html.c
+ (html_command_description, file_header_information)
+ (reset_html_targets_list, html_translate_names),
+ tp/Texinfo/XS/main/converter_types.h (HTML_TARGET): add
+ command_description to get the description associated to a node or
+ sectioning command node. Use it to set description if there is no
+ documentdescription (and to set keywords). Inspired by Benjamin
+ Kalish report.
+
+ * tp/Texinfo/Convert/HTML.pm (%XS_conversion_overrides),
+ tp/Texinfo/XS/convert/ConvertXS.xs (html_command_description): XS
+ override for html_command_description.
+
+ * tp/Makefile.tres, tp/t/html_tests.t
+ ($nodedescription_description_texinfo)
+ (nodedescription_description)
+ (nodedescription_description_no_use_nodes): test nodedescription used
+ as meta description.
+
2024-09-26 Patrice Dumas <pertusus@free.fr>
* tp/Texinfo/Convert/HTML.pm (_file_header_information)
diff --git a/tp/Makefile.tres b/tp/Makefile.tres
index 6637a9b575..5b39143cd9 100644
--- a/tp/Makefile.tres
+++ b/tp/Makefile.tres
@@ -738,6 +738,10 @@ test_files_generated_list =
$(test_tap_files_generated_list) \
t/results/html_tests/node_footnote_use_node/res_html \
t/results/html_tests/node_footnote_use_node_separate.pl \
t/results/html_tests/node_footnote_use_node_separate/res_html \
+ t/results/html_tests/nodedescription_description.pl \
+ t/results/html_tests/nodedescription_description/res_html \
+ t/results/html_tests/nodedescription_description_no_use_nodes.pl \
+ t/results/html_tests/nodedescription_description_no_use_nodes/res_html \
t/results/html_tests/raw_html.pl \
t/results/html_tests/redirection_same_labels.pl \
t/results/html_tests/redirection_same_labels/res_html \
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index fba025c265..33b373734e 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -145,6 +145,8 @@ my %XS_conversion_overrides = (
=> "Texinfo::Convert::ConvertXS::html_internal_command_tree",
"Texinfo::Convert::HTML::_internal_command_text"
=> "Texinfo::Convert::ConvertXS::html_internal_command_text",
+ "Texinfo::Convert::HTML::command_description"
+ => "Texinfo::Convert::ConvertXS::html_command_description",
"Texinfo::Convert::HTML::_XS_set_shared_conversion_state"
=> "Texinfo::Convert::ConvertXS::html_set_shared_conversion_state",
@@ -1426,7 +1428,7 @@ sub _internal_command_text($$$)
return undef;
}
-# Return text to be used for a hyperlink to $COMMAND.
+# Return text to be used for $COMMAND.
# $TYPE refers to the type of value returned from this function:
# 'text' - return text
# 'text_nonumber' - return text, without the section/chapter number
@@ -1475,6 +1477,100 @@ sub command_text($$;$)
return _internal_command_text($self, $command, $type);
}
+# Return text to be used for $COMMAND description.
+# $TYPE refers to the type of value returned from this function:
+# 'text' - return text
+# 'string' - return simpler text that can be used in element attributes
+sub command_description($$;$)
+{
+ my $self = shift;
+ my $command = shift;
+ my $type = shift;
+
+ if (!defined($type)) {
+ $type = 'text';
+ }
+
+ if (!defined($command)) {
+ cluck "in command_description($type) command not defined";
+ }
+
+ if ($command->{'extra'} and $command->{'extra'}->{'manual_content'}) {
+ return undef;
+ }
+
+ my $target = $self->_get_target($command);
+ if ($target) {
+ my $cached_type = 'description_'.${type};
+ if (defined($target->{$cached_type})) {
+ return $target->{$cached_type};
+ }
+
+ if (($command->{'type'}
+ and $command->{'type'} eq 'special_unit_element')
+ or ($command->{'cmdname'} and ($command->{'cmdname'} eq 'anchor'
+ or $command->{'cmdname'} eq 'float'))) {
+ $target->{$cached_type} = undef;
+ return undef;
+ }
+ my $node;
+
+ if ($command->{'cmdname'} and $command->{'cmdname'} eq 'node') {
+ $node = $command;
+ } elsif ($command->{'extra'}
+ and $command->{'extra'}->{'associated_node'}) {
+ $node = $command->{'extra'}->{'associated_node'};
+ }
+
+ if (!$node or !$node->{'extra'}) {
+ return undef;
+ }
+
+ my $node_description = $node->{'extra'}->{'node_description'};
+
+ if (!$node_description) {
+ return undef;
+ }
+
+ # TODO is it needed to have both $multiple_formatted and
+ # document_global_context ($explanation) set?
+ my $formatted_nodedescription_nr
+ = _formatted_nodedescription_nr($self, $node_description);
+
+ my $cmdname = $command->{'cmdname'};
+ my $context_name = "$cmdname description";
+ my $explanation = "command_description:$type \@$cmdname";
+
+ my $description_element;
+ if ($node_description->{'cmdname'} eq 'nodedescription') {
+ $description_element = $node_description->{'args'}->[0];
+ } else {
+ $description_element = {'contents' => $node_description->{'contents'}};
+ }
+ my $multiple_formatted;
+ if ($formatted_nodedescription_nr > 1) {
+ $multiple_formatted
+ = 'node-description-'.$formatted_nodedescription_nr;
+ }
+
+ my $tree_root;
+ if ($type eq 'string') {
+ $tree_root = {'type' => '_string',
+ 'contents' => [$description_element]};
+ } else {
+ $tree_root = $description_element;
+ }
+
+ $target->{$cached_type}
+ = $self->convert_tree_new_formatting_context($tree_root,
+ $context_name,
+ $multiple_formatted, $explanation);
+
+ return $target->{$cached_type};
+ }
+ return undef;
+}
+
# Return the element in the tree that $LABEL refers to.
sub label_command($$)
@@ -2847,7 +2943,8 @@ sub _translate_names($)
if ($command
and $self->{'targets'}->{$command}) {
my $target = $self->{'targets'}->{$command};
- foreach my $key ('text', 'string', 'tree') {
+ foreach my $key ('text', 'string', 'tree', 'description_text',
+ 'description_string') {
delete $target->{$key};
}
}
@@ -7556,6 +7653,25 @@ sub _convert_multitable_body_type($$$$) {
$default_types_conversion{'multitable_body'} = \&_convert_multitable_body_type;
+sub _formatted_nodedescription_nr($$)
+{
+ my $self = shift;
+ my $node_description = shift;
+
+ # update the number of time the node description was formatted
+ my $formatted_nodedescription_nr
+ = $self->get_shared_conversion_state('nodedescription',
+ 'formatted_nodedescriptions',
+ $node_description);
+ $formatted_nodedescription_nr = 0
+ if (!defined($formatted_nodedescription_nr));
+ $formatted_nodedescription_nr++;
+ $self->set_shared_conversion_state('nodedescription',
+ 'formatted_nodedescriptions',
+ $node_description, $formatted_nodedescription_nr);
+ return $formatted_nodedescription_nr;
+}
+
sub _convert_menu_entry_type($$$)
{
my $self = shift;
@@ -7631,17 +7747,8 @@ sub _convert_menu_entry_type($$$)
and $menu_description->{'contents'}->[0]
->{'contents'}->[0]->{'text'} !~ /\S/)))) {
$node_description = $node->{'extra'}->{'node_description'};
- # update the number of time the node description was formatted
$formatted_nodedescription_nr
- = $self->get_shared_conversion_state('nodedescription',
- 'formatted_nodedescriptions',
- $node_description);
- $formatted_nodedescription_nr = 0
- if (!defined($formatted_nodedescription_nr));
- $formatted_nodedescription_nr++;
- $self->set_shared_conversion_state('nodedescription',
- 'formatted_nodedescriptions',
- $node_description, $formatted_nodedescription_nr);
+ = _formatted_nodedescription_nr($self, $node_description);
}
}
}
@@ -11300,6 +11407,7 @@ sub _file_header_information($$;$)
my $filename = shift;
my $title;
+ my $command_description;
if ($command) {
my $command_string = $self->command_text($command, 'string');
if (defined($command_string) and $command_string ne ''
@@ -11335,12 +11443,16 @@ sub _file_header_information($$;$)
$context_str,
'element_title');
}
+ $command_description = $self->command_description($command, 'string');
}
$title = $self->get_info('title_string') if (!defined($title));
- my $keywords = $title;
+ my $keywords = $command_description;
+ $keywords = $title if (not defined($keywords) or $keywords eq '');
my $description = $self->get_info('documentdescription_string');
+ $description = $command_description
+ if (not defined($description) or $description eq '');
$description = $title
if (not defined($description) or $description eq '');
$description = $self->close_html_lone_element(
diff --git a/tp/Texinfo/XS/convert/ConvertXS.xs
b/tp/Texinfo/XS/convert/ConvertXS.xs
index 5a25773a95..cad3ed0e0a 100644
--- a/tp/Texinfo/XS/convert/ConvertXS.xs
+++ b/tp/Texinfo/XS/convert/ConvertXS.xs
@@ -1420,6 +1420,46 @@ html_internal_command_text (SV *converter_in, SV
*element_sv, const char *type)
OUTPUT:
RETVAL
+SV *
+html_command_description (SV *converter_in, SV *element_sv, const char *type=0)
+ PREINIT:
+ CONVERTER *self;
+ char *text = 0;
+ const ELEMENT *element;
+ CODE:
+ element = element_converter_from_sv (converter_in, element_sv,
+ "html_command_description", &self);
+ if (element)
+ {
+ int j;
+ enum html_text_type text_type = 0;
+ for (j = 0; j < HTT_string +1; j++)
+ {
+ if (!strcmp (html_command_text_type_name[j], type))
+ {
+ text_type = j;
+ break;
+ }
+ }
+ text
+ = html_command_description (self, element, text_type);
+ if (self->modified_state)
+ {
+ build_html_formatting_state (self, self->modified_state);
+ self->modified_state = 0;
+ }
+ }
+
+ if (text)
+ {
+ RETVAL = newSVpv_utf8 (text, 0);
+ non_perl_free (text);
+ }
+ else
+ RETVAL = newSV (0);
+ OUTPUT:
+ RETVAL
+
void
html_set_shared_conversion_state (SV *converter_in, cmdname, state_name, ...)
const char *cmdname = (char *)SvPVutf8_nolen($arg);
diff --git a/tp/Texinfo/XS/convert/convert_html.c
b/tp/Texinfo/XS/convert/convert_html.c
index 8c9bab9e47..34d637b618 100644
--- a/tp/Texinfo/XS/convert/convert_html.c
+++ b/tp/Texinfo/XS/convert/convert_html.c
@@ -4122,6 +4122,130 @@ html_command_text (CONVERTER *self, const ELEMENT
*command,
return html_internal_command_text (self, command, type);
}
+/* return value to be freed by caller */
+char *
+html_command_description (CONVERTER *self, const ELEMENT *command,
+ const enum html_text_type type)
+{
+ HTML_TARGET *target_info;
+
+ ELEMENT *manual_content = lookup_extra_element (command,
+ "manual_content");
+ if (manual_content)
+ return 0;
+
+ target_info = html_get_target (self, command);
+
+ if (target_info)
+ {
+ if (target_info->command_description[type])
+ return strdup (target_info->command_description[type]);
+ else
+ {
+ const ELEMENT *node = 0;
+ ELEMENT *tree_root;
+ char *explanation;
+ char *context_name;
+ const ELEMENT *node_description;
+ int formatted_nodedescription_nr = 0;
+ HTML_TARGET *node_target_info;
+ char *multiple_formatted = 0;
+ ELEMENT *description_element;
+ const char *command_name;
+
+ if (command->type == ET_special_unit_element)
+ return 0;
+
+ if (command->cmd && (command->cmd == CM_float
+ || command->cmd == CM_anchor))
+ return 0;
+
+ if (command->cmd == CM_node)
+ node = command;
+ else
+ node = lookup_extra_element (command, "associated_node");
+
+ if (!node)
+ return 0;
+
+ node_description = lookup_extra_element (node, "node_description");
+
+ if (!node_description)
+ return 0;
+
+ node_target_info
+ = find_element_target (self->html_targets, node);
+ node_target_info->formatted_nodedescription_nr++;
+ formatted_nodedescription_nr
+ = node_target_info->formatted_nodedescription_nr;
+
+ if (formatted_nodedescription_nr > 1)
+ {
+ xasprintf (&multiple_formatted,
+ "node-description-%d",
+ formatted_nodedescription_nr);
+ }
+
+ if (node_description->cmd == CM_nodedescription)
+ description_element = node_description->args.list[0];
+ else
+ {
+ description_element = new_element (ET_NONE);
+ description_element->contents = node_description->contents;
+ add_tree_to_build (self, description_element);
+ }
+
+ command_name = element_command_name (command);
+ xasprintf (&context_name, "%s description", command_name);
+ xasprintf (&explanation, "command_description:%s @%s",
+ html_command_text_type_name[type],
+ command_name);
+
+ if (type == HTT_string)
+ {
+ tree_root = new_element (ET__string);
+ add_to_contents_as_array (tree_root, description_element);
+ add_tree_to_build (self, tree_root);
+ }
+ else
+ tree_root = description_element;
+
+ target_info->command_description[type]
+ = convert_tree_new_formatting_context (self, tree_root,
+ context_name, multiple_formatted,
+ explanation, 0);
+ free (context_name);
+ free (explanation);
+
+ if (formatted_nodedescription_nr > 1)
+ free (multiple_formatted);
+ if (node_description->cmd != CM_nodedescription)
+ {
+ remove_tree_to_build (self, description_element);
+ description_element->contents.list = 0;
+ destroy_element (description_element);
+ }
+ if (type == HTT_string)
+ {
+ remove_tree_to_build (self, tree_root);
+ destroy_element (tree_root);
+ }
+ return strdup (target_info->command_description[type]);
+ }
+ }
+ /*
+ Can happen
+ * if USE_NODES is 0 and there are no sectioning commands.
+ * if a special element target was set to undef in user defined code.
+ * for @*ref with missing targets (maybe @novalidate needed in that case).
+ * for @node header if the node consist only in spaces (example in
sectioning
+ in_menu_only_special_ascii_spaces_node).
+ * for multiple targets with the same name, eg both @node and @anchor
+ * with @inforef with node argument only, without manual argument.
+ */
+ return 0;
+}
+
/* return value to be freed by caller */
char *
from_element_direction (CONVERTER *self, int direction,
@@ -6520,7 +6644,7 @@ format_single_footnote (CONVERTER *self, const ELEMENT
*element,
char *footnote
= call_formatting_function_format_single_footnote (self,
formatting_reference, element, footid,
- number_in_doc, footnote_location_href,
+ number_in_doc, footnote_location_href,
mark);
text_append (result, footnote);
@@ -7041,6 +7165,7 @@ file_header_information (CONVERTER *self, const ELEMENT
*command,
BEGIN_FILE_INFORMATION *begin_info = (BEGIN_FILE_INFORMATION *)
malloc (sizeof (BEGIN_FILE_INFORMATION));
const char *description = self->documentdescription_string;
+ char *command_description = 0;
int status;
TEXT text;
char *root_html_element_attributes
@@ -7117,15 +7242,25 @@ file_header_information (CONVERTER *self, const ELEMENT
*command,
destroy_element_and_children (title_tree);
}
free (command_string);
+
+ command_description = html_command_description (self, command,
+ HTT_string);
}
if (!begin_info->title)
begin_info->title = strdup (self->title_string);
- if (begin_info->title)
+ if (command_description && strlen (command_description))
+ begin_info->keywords = strdup (command_description);
+ else if (begin_info->title)
begin_info->keywords = strdup (begin_info->title);
if (!description || !strlen (description))
- description = begin_info->title;
+ {
+ if (command_description && strlen (command_description))
+ description = command_description;
+ else
+ description = begin_info->title;
+ }
if (description && strlen (description))
{
@@ -7135,6 +7270,8 @@ file_header_information (CONVERTER *self, const ELEMENT
*command,
begin_info->description = strdup (text.text);
}
+ free (command_description);
+
text_reset (&text);
if (self->conf->OUTPUT_ENCODING_NAME.o.string
&& strlen (self->conf->OUTPUT_ENCODING_NAME.o.string))
@@ -17054,6 +17191,9 @@ reset_html_targets_list (CONVERTER *self,
HTML_TARGET_LIST *targets)
for (j = 0; j < HTT_string_nonumber+1; j++)
free (html_target->command_text[j]);
+ for (j = 0; j < HTT_string_nonumber+1; j++)
+ free (html_target->command_description[j]);
+
free_tree_added_elements (self, &html_target->tree);
free_tree_added_elements (self, &html_target->tree_nonumber);
}
@@ -17823,6 +17963,10 @@ html_translate_names (CONVERTER *self)
target_info->command_text[HTT_string] = 0;
free (target_info->command_text[HTT_text]);
target_info->command_text[HTT_text] = 0;
+ free (target_info->command_description[HTT_string]);
+ target_info->command_description[HTT_string] = 0;
+ free (target_info->command_description[HTT_text]);
+ target_info->command_description[HTT_text] = 0;
}
}
}
diff --git a/tp/Texinfo/XS/convert/convert_html.h
b/tp/Texinfo/XS/convert/convert_html.h
index fcb92df6ef..fb431e1ea8 100644
--- a/tp/Texinfo/XS/convert/convert_html.h
+++ b/tp/Texinfo/XS/convert/convert_html.h
@@ -141,6 +141,8 @@ TREE_ADDED_ELEMENTS *html_internal_command_tree (CONVERTER
*self,
const ELEMENT *command, int no_number);
char *html_internal_command_text (CONVERTER *self, const ELEMENT *command,
const enum html_text_type type);
+char *html_command_description (CONVERTER *self, const ELEMENT *command,
+ const enum html_text_type type);
EXPLAINED_COMMAND_TYPE *find_explained_command_string
(const EXPLAINED_COMMAND_TYPE_LIST *type_explanations,
diff --git a/tp/Texinfo/XS/main/converter_types.h
b/tp/Texinfo/XS/main/converter_types.h
index 1077cfab92..78d3dd18b5 100644
--- a/tp/Texinfo/XS/main/converter_types.h
+++ b/tp/Texinfo/XS/main/converter_types.h
@@ -290,6 +290,7 @@ typedef struct HTML_TARGET {
char *shortcontents_target;
char *command_text[HTT_string_nonumber+1];
+ char *command_description[HTT_string_nonumber+1];
TREE_ADDED_ELEMENTS tree;
TREE_ADDED_ELEMENTS tree_nonumber;
FILE_NUMBER_NAME file_number_name;
diff --git a/tp/t/html_tests.t b/tp/t/html_tests.t
index ef74dff5e5..0807aa6db7 100644
--- a/tp/t/html_tests.t
+++ b/tp/t/html_tests.t
@@ -986,6 +986,31 @@ my $css_init_file_texinfo = '@node Top
@titlefont{in a new heading}
';
+my $nodedescription_description_texinfo = '@node Top
+@top test of descriptions with nodedescription*
+
+@node toto
+@chapter Toto
+
+@nodedescription toto is there:: and the @emph{is a description}@w{slightly
long} and @verb{:vv somewhat:} @ringaccent anexpected
+
+@nodedescriptionblock
+Block along line node description for toto
+@end nodedescriptionblock
+
+@node titi
+@chapter Titi
+
+@nodedescriptionblock
+description of titi in block
+@end nodedescriptionblock
+
+@node other
+@chapter Other
+
+@nodedescription other comes here
+';
+
my @file_tests = (
['empty_node_in_html_title_no_sec_name',
'@node Top
@@ -1534,6 +1559,16 @@ undef, {'test_file' =>
'simple_only_special_spaces_node.texi',
', {}, {'USE_NODES' => 0,
# needed for the test
'SPLIT' => 'node'}],
+['nodedescription_description',
+$nodedescription_description_texinfo, {}, {'FORMAT_MENU' => 'menu',
+ # needed for the test
+ 'SPLIT' => 'node'}],
+['nodedescription_description_no_use_nodes',
+$nodedescription_description_texinfo, {}, {'FORMAT_MENU' => 'menu',
+ 'USE_NODES' => 0,
+ # needed for the test
+ 'SPLIT' => 'node'}],
+
);
diff --git a/tp/t/results/html_tests/nodedescription_description.pl
b/tp/t/results/html_tests/nodedescription_description.pl
new file mode 100644
index 0000000000..0a6c0b5cfc
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description.pl
@@ -0,0 +1,838 @@
+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{'nodedescription_description'} = {
+ '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' => 'test of descriptions with nodedescription*'
+ }
+ ],
+ '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' => 'toto'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'node_description' => {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'toto is there:: and the '
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'is a description'
+ }
+ ],
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'emph',
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'slightly long'
+ }
+ ],
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'w',
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'text' => ' and '
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'vv somewhat',
+ 'type' => 'raw'
+ }
+ ],
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'verb',
+ 'info' => {
+ 'delimiter' => ':'
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'text' => ' '
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'a'
+ }
+ ],
+ 'type' => 'following_arg'
+ }
+ ],
+ 'cmdname' => 'ringaccent',
+ 'info' => {
+ 'spaces_after_cmd_before_arg' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'text' => 'nexpected'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'nodedescription',
+ 'extra' => {
+ 'element_node' => {}
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ 'node_long_description' => {
+ 'args' => [
+ {
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'block_line_arg'
+ }
+ ],
+ 'cmdname' => 'nodedescriptionblock',
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Block along line node description for toto
+'
+ }
+ ],
+ 'type' => 'paragraph'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'nodedescriptionblock'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'end',
+ 'extra' => {
+ 'text_arg' => 'nodedescriptionblock'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 11
+ }
+ }
+ ],
+ 'extra' => {
+ 'element_node' => {}
+ },
+ 'source_info' => {
+ 'line_nr' => 9
+ }
+ },
+ 'normalized' => 'toto'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 4
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Toto'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {},
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {},
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 5
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'titi'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'node_description' => {
+ 'args' => [
+ {
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'block_line_arg'
+ }
+ ],
+ 'cmdname' => 'nodedescriptionblock',
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'description of titi in block
+'
+ }
+ ],
+ 'type' => 'paragraph'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'nodedescriptionblock'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'end',
+ 'extra' => {
+ 'text_arg' => 'nodedescriptionblock'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 18
+ }
+ }
+ ],
+ 'extra' => {
+ 'element_node' => {}
+ },
+ 'source_info' => {
+ 'line_nr' => 16
+ }
+ },
+ 'node_long_description' => {},
+ 'normalized' => 'titi'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 13
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Titi'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {},
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 14
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'other'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'node_description' => {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'other comes here'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'nodedescription',
+ 'extra' => {
+ 'element_node' => {}
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 23
+ }
+ },
+ 'normalized' => 'other'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 20
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Other'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {}
+ ],
+ 'extra' => {
+ 'section_number' => '3'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 21
+ }
+ }
+ ],
+ 'type' => 'document_root'
+};
+$result_trees{'nodedescription_description'}{'contents'}[3]{'extra'}{'node_description'}{'extra'}{'element_node'}
= $result_trees{'nodedescription_description'}{'contents'}[3];
+$result_trees{'nodedescription_description'}{'contents'}[3]{'extra'}{'node_long_description'}{'extra'}{'element_node'}
= $result_trees{'nodedescription_description'}{'contents'}[3];
+$result_trees{'nodedescription_description'}{'contents'}[4]{'contents'}[1] =
$result_trees{'nodedescription_description'}{'contents'}[3]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description'}{'contents'}[4]{'contents'}[3] =
$result_trees{'nodedescription_description'}{'contents'}[3]{'extra'}{'node_long_description'};
+$result_trees{'nodedescription_description'}{'contents'}[5]{'extra'}{'node_description'}{'extra'}{'element_node'}
= $result_trees{'nodedescription_description'}{'contents'}[5];
+$result_trees{'nodedescription_description'}{'contents'}[5]{'extra'}{'node_long_description'}
=
$result_trees{'nodedescription_description'}{'contents'}[5]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description'}{'contents'}[6]{'contents'}[1] =
$result_trees{'nodedescription_description'}{'contents'}[5]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description'}{'contents'}[7]{'extra'}{'node_description'}{'extra'}{'element_node'}
= $result_trees{'nodedescription_description'}{'contents'}[7];
+$result_trees{'nodedescription_description'}{'contents'}[8]{'contents'}[1] =
$result_trees{'nodedescription_description'}{'contents'}[7]{'extra'}{'node_description'};
+
+$result_texis{'nodedescription_description'} = '@node Top
+@top test of descriptions with nodedescription*
+
+@node toto
+@chapter Toto
+
+@nodedescription toto is there:: and the @emph{is a description}@w{slightly
long} and @verb{:vv somewhat:} @ringaccent anexpected
+
+@nodedescriptionblock
+Block along line node description for toto
+@end nodedescriptionblock
+
+@node titi
+@chapter Titi
+
+@nodedescriptionblock
+description of titi in block
+@end nodedescriptionblock
+
+@node other
+@chapter Other
+
+@nodedescription other comes here
+';
+
+
+$result_texts{'nodedescription_description'} = 'test of descriptions with
nodedescription*
+******************************************
+
+1 Toto
+******
+
+
+
+2 Titi
+******
+
+
+3 Other
+*******
+
+';
+
+$result_sectioning{'nodedescription_description'} = {
+ 'extra' => {
+ 'section_childs' => [
+ {
+ 'cmdname' => 'top',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ 'section_childs' => [
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'toto'
+ }
+ },
+ 'section_directions' => {
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '1',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ },
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'titi'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '2',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ },
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'other'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '3',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ }
+ ],
+ 'section_level' => 0,
+ 'sectioning_root' => {},
+ 'toplevel_directions' => {}
+ }
+ }
+ ],
+ 'section_level' => -1
+ }
+};
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'toplevel_directions'}{'up'}
=
$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
= $result_sectioning{'nodedescription_description'};
+
+$result_nodes{'nodedescription_description'} = [
+ {
+ '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' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '3'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'other'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'titi'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'toto'
+ }
+ }
+ },
+ 'normalized' => 'Top'
+ }
+ },
+ {},
+ {},
+ {}
+];
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'nodedescription_description'}[0];
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'nodedescription_description'}[0];
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'nodedescription_description'}[0];
+$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'nodedescription_description'}[0];
+$result_nodes{'nodedescription_description'}[1] =
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description'}[2] =
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description'}[3] =
$result_nodes{'nodedescription_description'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'nodedescription_description'} = [
+ {
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'toto'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'titi'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'other'
+ }
+ }
+];
+
+$result_errors{'nodedescription_description'} = [
+ {
+ 'error_line' => 'warning: @verb should not appear on @nodedescription line
+',
+ 'line_nr' => 7,
+ 'text' => '@verb should not appear on @nodedescription line',
+ 'type' => 'warning'
+ }
+];
+
+
+$result_floats{'nodedescription_description'} = {};
+
+
+1;
diff --git
a/tp/t/results/html_tests/nodedescription_description/res_html/index.html
b/tp/t/results/html_tests/nodedescription_description/res_html/index.html
new file mode 100644
index 0000000000..8c681dd0ef
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description/res_html/index.html
@@ -0,0 +1,53 @@
+<!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 (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="Top (test of descriptions with
nodedescription*)">
+<meta name="keywords" content="Top (test of descriptions with
nodedescription*)">
+<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="toto.html" rel="next" title="toto">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+td.menu-entry-description {vertical-align: top; padding-left: 1em}
+td.menu-entry-destination {vertical-align: top}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
+<p>
+Next: <a href="toto.html" accesskey="n" rel="next">Toto</a> </p>
+</div>
+<hr>
+<h1 class="top" id="test-of-descriptions-with-nodedescription_002a"><span>test
of descriptions with nodedescription*<a class="copiable-link"
href="#test-of-descriptions-with-nodedescription_002a"> ¶</a></span></h1>
+
+<table class="menu">
+<tr><td class="menu-entry-destination">• <a href="toto.html"
accesskey="1">toto</a>:</td><td class="menu-entry-description">toto is there::
and the <em class="emph">is a description</em>slightly long<!-- /@w -->
and <code class="verb">vv somewhat</code> ånexpected</td></tr>
+<tr><td class="menu-entry-destination">• <a href="titi.html"
accesskey="2">titi</a>:</td><td class="menu-entry-description">description of
titi in block
+</td></tr>
+<tr><td class="menu-entry-destination">• <a href="other.html"
accesskey="3">other</a>:</td><td class="menu-entry-description">other comes
here</td></tr>
+</table>
+</div>
+<hr>
+<div class="nav-panel">
+<p>
+Next: <a href="toto.html" accesskey="n" rel="next">Toto</a> </p>
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/html_tests/nodedescription_description/res_html/other.html
b/tp/t/results/html_tests/nodedescription_description/res_html/other.html
new file mode 100644
index 0000000000..f181a67774
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description/res_html/other.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>other (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="other comes here">
+<meta name="keywords" content="other comes here">
+<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="titi.html" rel="prev" title="titi">
+<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="other">
+<div class="nav-panel">
+<p>
+Previous: <a href="titi.html" accesskey="p" rel="prev">Titi</a>, Up: <a
href="index.html" accesskey="u" rel="up">test of descriptions with
nodedescription*</a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="Other"><span>3 Other<a class="copiable-link"
href="#Other"> ¶</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/html_tests/nodedescription_description/res_html/titi.html
b/tp/t/results/html_tests/nodedescription_description/res_html/titi.html
new file mode 100644
index 0000000000..0cfadecdd8
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description/res_html/titi.html
@@ -0,0 +1,45 @@
+<!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>titi (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="description of titi in block
+">
+<meta name="keywords" content="description of titi in block
+">
+<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="other.html" rel="next" title="other">
+<link href="toto.html" rel="prev" title="toto">
+<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="titi">
+<div class="nav-panel">
+<p>
+Next: <a href="other.html" accesskey="n" rel="next">Other</a>, Previous: <a
href="toto.html" accesskey="p" rel="prev">Toto</a>, Up: <a href="index.html"
accesskey="u" rel="up">test of descriptions with nodedescription*</a>
</p>
+</div>
+<hr>
+<h2 class="chapter" id="Titi"><span>2 Titi<a class="copiable-link"
href="#Titi"> ¶</a></span></h2>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/html_tests/nodedescription_description/res_html/toto.html
b/tp/t/results/html_tests/nodedescription_description/res_html/toto.html
new file mode 100644
index 0000000000..2133563a1f
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description/res_html/toto.html
@@ -0,0 +1,44 @@
+<!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>toto (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="toto is there:: and the is a
descriptionslightly long and vv somewhat ånexpected">
+<meta name="keywords" content="toto is there:: and the is a
descriptionslightly long and vv somewhat ånexpected">
+<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="titi.html" rel="next" title="titi">
+<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="toto">
+<div class="nav-panel">
+<p>
+Next: <a href="titi.html" accesskey="n" rel="next">Titi</a>, Previous: <a
href="index.html" accesskey="p" rel="prev">test of descriptions with
nodedescription*</a>, Up: <a href="index.html" accesskey="u" rel="up">test of
descriptions with nodedescription*</a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="Toto"><span>1 Toto<a class="copiable-link"
href="#Toto"> ¶</a></span></h2>
+
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes.pl
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes.pl
new file mode 100644
index 0000000000..46bf378a61
--- /dev/null
+++ b/tp/t/results/html_tests/nodedescription_description_no_use_nodes.pl
@@ -0,0 +1,838 @@
+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{'nodedescription_description_no_use_nodes'} = {
+ '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' => 'test of descriptions with nodedescription*'
+ }
+ ],
+ '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' => 'toto'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'node_description' => {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'toto is there:: and the '
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'is a description'
+ }
+ ],
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'emph',
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'slightly long'
+ }
+ ],
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'w',
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'text' => ' and '
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'vv somewhat',
+ 'type' => 'raw'
+ }
+ ],
+ 'type' => 'brace_command_arg'
+ }
+ ],
+ 'cmdname' => 'verb',
+ 'info' => {
+ 'delimiter' => ':'
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'text' => ' '
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'a'
+ }
+ ],
+ 'type' => 'following_arg'
+ }
+ ],
+ 'cmdname' => 'ringaccent',
+ 'info' => {
+ 'spaces_after_cmd_before_arg' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ {
+ 'text' => 'nexpected'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'nodedescription',
+ 'extra' => {
+ 'element_node' => {}
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 7
+ }
+ },
+ 'node_long_description' => {
+ 'args' => [
+ {
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'block_line_arg'
+ }
+ ],
+ 'cmdname' => 'nodedescriptionblock',
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Block along line node description for toto
+'
+ }
+ ],
+ 'type' => 'paragraph'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'nodedescriptionblock'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'end',
+ 'extra' => {
+ 'text_arg' => 'nodedescriptionblock'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 11
+ }
+ }
+ ],
+ 'extra' => {
+ 'element_node' => {}
+ },
+ 'source_info' => {
+ 'line_nr' => 9
+ }
+ },
+ 'normalized' => 'toto'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 4
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Toto'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {},
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {},
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '1'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 5
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'titi'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'node_description' => {
+ 'args' => [
+ {
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'block_line_arg'
+ }
+ ],
+ 'cmdname' => 'nodedescriptionblock',
+ 'contents' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'description of titi in block
+'
+ }
+ ],
+ 'type' => 'paragraph'
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'nodedescriptionblock'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'end',
+ 'extra' => {
+ 'text_arg' => 'nodedescriptionblock'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 18
+ }
+ }
+ ],
+ 'extra' => {
+ 'element_node' => {}
+ },
+ 'source_info' => {
+ 'line_nr' => 16
+ }
+ },
+ 'node_long_description' => {},
+ 'normalized' => 'titi'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 13
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Titi'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {},
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'extra' => {
+ 'section_number' => '2'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 14
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'other'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'is_target' => 1,
+ 'node_description' => {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'other comes here'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'nodedescription',
+ 'extra' => {
+ 'element_node' => {}
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 23
+ }
+ },
+ 'normalized' => 'other'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 20
+ }
+ },
+ {
+ 'args' => [
+ {
+ 'contents' => [
+ {
+ 'text' => 'Other'
+ }
+ ],
+ 'info' => {
+ 'spaces_after_argument' => {
+ 'text' => '
+'
+ }
+ },
+ 'type' => 'line_arg'
+ }
+ ],
+ 'cmdname' => 'chapter',
+ 'contents' => [
+ {
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {}
+ ],
+ 'extra' => {
+ 'section_number' => '3'
+ },
+ 'info' => {
+ 'spaces_before_argument' => {
+ 'text' => ' '
+ }
+ },
+ 'source_info' => {
+ 'line_nr' => 21
+ }
+ }
+ ],
+ 'type' => 'document_root'
+};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3]{'extra'}{'node_description'}{'extra'}{'element_node'}
= $result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3];
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3]{'extra'}{'node_long_description'}{'extra'}{'element_node'}
= $result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3];
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[4]{'contents'}[1]
=
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[4]{'contents'}[3]
=
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[3]{'extra'}{'node_long_description'};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5]{'extra'}{'node_description'}{'extra'}{'element_node'}
= $result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5];
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5]{'extra'}{'node_long_description'}
=
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[6]{'contents'}[1]
=
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[5]{'extra'}{'node_description'};
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[7]{'extra'}{'node_description'}{'extra'}{'element_node'}
= $result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[7];
+$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[8]{'contents'}[1]
=
$result_trees{'nodedescription_description_no_use_nodes'}{'contents'}[7]{'extra'}{'node_description'};
+
+$result_texis{'nodedescription_description_no_use_nodes'} = '@node Top
+@top test of descriptions with nodedescription*
+
+@node toto
+@chapter Toto
+
+@nodedescription toto is there:: and the @emph{is a description}@w{slightly
long} and @verb{:vv somewhat:} @ringaccent anexpected
+
+@nodedescriptionblock
+Block along line node description for toto
+@end nodedescriptionblock
+
+@node titi
+@chapter Titi
+
+@nodedescriptionblock
+description of titi in block
+@end nodedescriptionblock
+
+@node other
+@chapter Other
+
+@nodedescription other comes here
+';
+
+
+$result_texts{'nodedescription_description_no_use_nodes'} = 'test of
descriptions with nodedescription*
+******************************************
+
+1 Toto
+******
+
+
+
+2 Titi
+******
+
+
+3 Other
+*******
+
+';
+
+$result_sectioning{'nodedescription_description_no_use_nodes'} = {
+ 'extra' => {
+ 'section_childs' => [
+ {
+ 'cmdname' => 'top',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ 'section_childs' => [
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'toto'
+ }
+ },
+ 'section_directions' => {
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '1',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ },
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'titi'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '2',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ },
+ {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'associated_node' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'normalized' => 'other'
+ }
+ },
+ 'section_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'section_level' => 1,
+ 'section_number' => '3',
+ 'toplevel_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ }
+ }
+ }
+ ],
+ 'section_level' => 0,
+ 'sectioning_root' => {},
+ 'toplevel_directions' => {}
+ }
+ }
+ ],
+ 'section_level' => -1
+ }
+};
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0]{'extra'}{'toplevel_directions'}{'up'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1]{'extra'}{'toplevel_directions'}{'up'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'section_directions'}{'up'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'toplevel_directions'}{'prev'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[1];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'section_childs'}[2]{'extra'}{'toplevel_directions'}{'up'}
=
$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0];
+$result_sectioning{'nodedescription_description_no_use_nodes'}{'extra'}{'section_childs'}[0]{'extra'}{'sectioning_root'}
= $result_sectioning{'nodedescription_description_no_use_nodes'};
+
+$result_nodes{'nodedescription_description_no_use_nodes'} = [
+ {
+ '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' => {
+ 'next' => {
+ 'cmdname' => 'node',
+ 'extra' => {
+ 'associated_section' => {
+ 'cmdname' => 'chapter',
+ 'extra' => {
+ 'section_number' => '3'
+ }
+ },
+ 'node_directions' => {
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'other'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'titi'
+ }
+ },
+ 'prev' => {},
+ 'up' => {}
+ },
+ 'normalized' => 'toto'
+ }
+ }
+ },
+ 'normalized' => 'Top'
+ }
+ },
+ {},
+ {},
+ {}
+];
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'nodedescription_description_no_use_nodes'}[0];
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
=
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'nodedescription_description_no_use_nodes'}[0];
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'prev'}
= $result_nodes{'nodedescription_description_no_use_nodes'}[0];
+$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'up'}
= $result_nodes{'nodedescription_description_no_use_nodes'}[0];
+$result_nodes{'nodedescription_description_no_use_nodes'}[1] =
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description_no_use_nodes'}[2] =
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+$result_nodes{'nodedescription_description_no_use_nodes'}[3] =
$result_nodes{'nodedescription_description_no_use_nodes'}[0]{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'}{'extra'}{'node_directions'}{'next'};
+
+$result_menus{'nodedescription_description_no_use_nodes'} = [
+ {
+ 'extra' => {
+ 'normalized' => 'Top'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'toto'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'titi'
+ }
+ },
+ {
+ 'extra' => {
+ 'normalized' => 'other'
+ }
+ }
+];
+
+$result_errors{'nodedescription_description_no_use_nodes'} = [
+ {
+ 'error_line' => 'warning: @verb should not appear on @nodedescription line
+',
+ 'line_nr' => 7,
+ 'text' => '@verb should not appear on @nodedescription line',
+ 'type' => 'warning'
+ }
+];
+
+
+$result_floats{'nodedescription_description_no_use_nodes'} = {};
+
+
+1;
diff --git
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/index.html
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/index.html
new file mode 100644
index 0000000000..e62123351f
--- /dev/null
+++
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/index.html
@@ -0,0 +1,44 @@
+<!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>test of descriptions with nodedescription*</title>
+
+<meta name="description" content="test of descriptions with nodedescription*">
+<meta name="keywords" content="test of descriptions with nodedescription*">
+<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="test of descriptions with
nodedescription*">
+<link href="toto.html" rel="next" title="1 Toto">
+<style type="text/css">
+<!--
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+span:hover a.copiable-link {visibility: visible}
+td.menu-entry-description {vertical-align: top; padding-left: 1em}
+td.menu-entry-destination {vertical-align: top}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<div class="top-level-extent" id="Top">
+<h1 class="top" id="test-of-descriptions-with-nodedescription_002a"><span>test
of descriptions with nodedescription*<a class="copiable-link"
href="#test-of-descriptions-with-nodedescription_002a"> ¶</a></span></h1>
+
+<table class="menu">
+<tr><td class="menu-entry-destination">• <a href="toto.html#toto"
accesskey="1">toto</a>:</td><td class="menu-entry-description">toto is there::
and the <em class="emph">is a description</em>slightly long<!-- /@w -->
and <code class="verb">vv somewhat</code> ånexpected</td></tr>
+<tr><td class="menu-entry-destination">• <a href="titi.html#titi"
accesskey="2">titi</a>:</td><td class="menu-entry-description">description of
titi in block
+</td></tr>
+<tr><td class="menu-entry-destination">• <a href="other.html#other"
accesskey="3">other</a>:</td><td class="menu-entry-description">other comes
here</td></tr>
+</table>
+</div>
+<hr>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/other.html
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/other.html
new file mode 100644
index 0000000000..7979f8abae
--- /dev/null
+++
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/other.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>3 Other (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="other comes here">
+<meta name="keywords" content="other comes here">
+<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="test of descriptions with
nodedescription*">
+<link href="index.html" rel="up" title="test of descriptions with
nodedescription*">
+<link href="titi.html" rel="prev" title="2 Titi">
+<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="other">
+<div class="nav-panel">
+<p>
+Prev: <a href="titi.html" accesskey="p" rel="prev">Titi</a>, Up : <a
href="index.html" accesskey="u" rel="up">test of descriptions with
nodedescription*</a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="Other"><span>3 Other<a class="copiable-link"
href="#Other"> ¶</a></span></h2>
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/titi.html
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/titi.html
new file mode 100644
index 0000000000..810412c3e6
--- /dev/null
+++
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/titi.html
@@ -0,0 +1,45 @@
+<!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>2 Titi (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="description of titi in block
+">
+<meta name="keywords" content="description of titi in block
+">
+<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="test of descriptions with
nodedescription*">
+<link href="index.html" rel="up" title="test of descriptions with
nodedescription*">
+<link href="other.html" rel="next" title="3 Other">
+<link href="toto.html" rel="prev" title="1 Toto">
+<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="titi">
+<div class="nav-panel">
+<p>
+Next: <a href="other.html" accesskey="n" rel="next">Other</a>, Prev: <a
href="toto.html" accesskey="p" rel="prev">Toto</a>, Up : <a href="index.html"
accesskey="u" rel="up">test of descriptions with nodedescription*</a>
</p>
+</div>
+<hr>
+<h2 class="chapter" id="Titi"><span>2 Titi<a class="copiable-link"
href="#Titi"> ¶</a></span></h2>
+
+
+</div>
+
+
+
+</body>
+</html>
diff --git
a/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/toto.html
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/toto.html
new file mode 100644
index 0000000000..a5ae266102
--- /dev/null
+++
b/tp/t/results/html_tests/nodedescription_description_no_use_nodes/res_html/toto.html
@@ -0,0 +1,44 @@
+<!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>1 Toto (test of descriptions with nodedescription*)</title>
+
+<meta name="description" content="toto is there:: and the is a
descriptionslightly long and vv somewhat ånexpected">
+<meta name="keywords" content="toto is there:: and the is a
descriptionslightly long and vv somewhat ånexpected">
+<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="test of descriptions with
nodedescription*">
+<link href="index.html" rel="up" title="test of descriptions with
nodedescription*">
+<link href="titi.html" rel="next" title="2 Titi">
+<link href="index.html" rel="prev" title="test of descriptions with
nodedescription*">
+<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="toto">
+<div class="nav-panel">
+<p>
+Next: <a href="titi.html" accesskey="n" rel="next">Titi</a>, Up : <a
href="index.html" accesskey="u" rel="up">test of descriptions with
nodedescription*</a> </p>
+</div>
+<hr>
+<h2 class="chapter" id="Toto"><span>1 Toto<a class="copiable-link"
href="#Toto"> ¶</a></span></h2>
+
+
+
+</div>
+
+
+
+</body>
+</html>