[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
branch master updated: * doc/texi2any_api.texi (Heading Commands Formatt
From: |
Patrice Dumas |
Subject: |
branch master updated: * doc/texi2any_api.texi (Heading Commands Formatting), tp/Texinfo/Convert/HTML.pm (register_opened_section_level) (close_registered_sections_level, _initialize_output_state), tp/Texinfo/XS/convert/ConvertXS.xs (html_register_opened_section_level) (html_close_registered_sections_level), tp/Texinfo/XS/convert/convert_html.c (html_register_opened_section_level) (html_register_opened_filename_section_level) (html_close_registered_sections_level) (html_close_registered_filename_sections_level, [...] |
Date: |
Thu, 05 Sep 2024 18:21:28 -0400 |
This is an automated email from the git hooks/post-receive script.
pertusus pushed a commit to branch master
in repository texinfo.
The following commit(s) were added to refs/heads/master by this push:
new 69fc3accdc * doc/texi2any_api.texi (Heading Commands Formatting),
tp/Texinfo/Convert/HTML.pm (register_opened_section_level)
(close_registered_sections_level, _initialize_output_state),
tp/Texinfo/XS/convert/ConvertXS.xs (html_register_opened_section_level)
(html_close_registered_sections_level), tp/Texinfo/XS/convert/convert_html.c
(html_register_opened_section_level)
(html_register_opened_filename_section_level)
(html_close_registered_sections_level) (html_close_registered_file [...]
69fc3accdc is described below
commit 69fc3accdc1ad2b79edab80fe35f1bfe76aa21f8
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Fri Sep 6 00:21:27 2024 +0200
* doc/texi2any_api.texi (Heading Commands Formatting),
tp/Texinfo/Convert/HTML.pm (register_opened_section_level)
(close_registered_sections_level, _initialize_output_state),
tp/Texinfo/XS/convert/ConvertXS.xs
(html_register_opened_section_level)
(html_close_registered_sections_level),
tp/Texinfo/XS/convert/convert_html.c
(html_register_opened_section_level)
(html_register_opened_filename_section_level)
(html_close_registered_sections_level)
(html_close_registered_filename_sections_level, html_set_pages_files)
(html_conversion_finalization, html_free_converter),
tp/Texinfo/XS/main/converter_types.h (STRING_STACK_LIST, CONVERTER):
add a filename argument to register_opened_section_level and
close_registered_sections_level to avoid closing sections in another
file. Update XS interface. Update callers.
---
ChangeLog | 19 ++++
doc/texi2any_api.texi | 16 ++-
tp/Texinfo/Convert/HTML.pm | 45 ++++++---
tp/Texinfo/XS/convert/ConvertXS.xs | 12 ++-
tp/Texinfo/XS/convert/convert_html.c | 109 ++++++++++++++++-----
tp/Texinfo/XS/convert/convert_html.h | 10 +-
tp/Texinfo/XS/main/converter_types.h | 7 +-
tp/init/book.pm | 6 +-
.../res_html/Bar.html | 1 -
.../res_html/Foo.html | 1 +
.../res_html/Bar.html | 1 -
.../res_html/Foo.html | 1 +
.../res_html/-.html | 1 +
.../res_html/unknown_node.html | 1 -
.../res_html/my-node.html | 1 +
.../res_html/other-node.html | 1 -
.../res_html/chapter.html | 1 -
.../res_html/navigation_abt.html | 2 +
.../res_html/subsection.html | 1 -
.../res_html/a.html | 1 +
.../res_html/n.html | 1 -
21 files changed, 181 insertions(+), 57 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 40f08df835..c342c1c6e3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2024-09-05 Patrice Dumas <pertusus@free.fr>
+
+ * doc/texi2any_api.texi (Heading Commands Formatting),
+ tp/Texinfo/Convert/HTML.pm (register_opened_section_level)
+ (close_registered_sections_level, _initialize_output_state),
+ tp/Texinfo/XS/convert/ConvertXS.xs
+ (html_register_opened_section_level)
+ (html_close_registered_sections_level),
+ tp/Texinfo/XS/convert/convert_html.c
+ (html_register_opened_section_level)
+ (html_register_opened_filename_section_level)
+ (html_close_registered_sections_level)
+ (html_close_registered_filename_sections_level, html_set_pages_files)
+ (html_conversion_finalization, html_free_converter),
+ tp/Texinfo/XS/main/converter_types.h (STRING_STACK_LIST, CONVERTER):
+ add a filename argument to register_opened_section_level and
+ close_registered_sections_level to avoid closing sections in another
+ file. Update XS interface. Update callers.
+
2024-09-05 Patrice Dumas <pertusus@free.fr>
* tp/ext/epub3.pm (epub_convert_special_unit_type): rename
diff --git a/doc/texi2any_api.texi b/doc/texi2any_api.texi
index 4770fa2f50..10724278d7 100644
--- a/doc/texi2any_api.texi
+++ b/doc/texi2any_api.texi
@@ -3022,7 +3022,9 @@ done in the sectioning commands conversion function only.
The function for registering opened section extent is
@code{register_opened_section_level}:
-@defun @var{$converter}->register_opened_section_level ($level, $closing_text)
+@defun @var{$converter}->register_opened_section_level ($filename, $level,
$closing_text)
+@var{$filename} is the filename the section belongs to. You could use
+@code{$converter->current_filename()} for @var{$filename}.
@var{$level} is the sectioning command level. It is typically
obtained with @code{section->@{'extra'@}->@{'section_level'@}}
(@pxref{Texinfo Tree Elements in User Defined Functions}).
@@ -3033,7 +3035,9 @@ section level @var{$level} is closed.
The function for closing registered section extents is
@code{close_registered_sections_level}:
-@deftypefun {@var{\@@closing_texts} =}
@var{$converter}->close_registered_sections_level (@var{$level})
+@deftypefun {@var{\@@closing_texts} =}
@var{$converter}->close_registered_sections_level (@var{$filename},
@var{$level})
+@var{$filename} is the filename the closed sections belong to. You could use
+@code{$converter->current_filename()} for @var{$filename}.
@var{$level} is the sectioning command level. Opened section are closed
down to section level @var{$level}. The closing texts are returned in the
@var{\@@closing_texts} array reference in order.
@@ -3044,12 +3048,14 @@ Example of use:
@group
my $level = $opening_section->@{'extra'@}->@{'section_level'@};
my $closed_strings
- = $converter->close_registered_sections_level($level);
+ = $converter->close_registered_sections_level(
+ $converter->current_filename(), $level);
$result .= join('', @@@{$closed_strings@});
# ....
-$converter->register_opened_section_level($level, "</div>\n");
+$converter->register_opened_section_level(
+ $converter->current_filename(), $level, "</div>\n");
@end group
@end example
@@ -4362,7 +4368,7 @@ to format the table of contents (@pxref{Converter General
Information}),
and @code{command_contents_href} and @code{command_href}
(@pxref{Target Tree Element Link})
are used for links. If @var{$filename} is unset, the current file name
-is used, using @code{$converter->get_info('current_filename')}.
+is used, using @code{$converter->current_filename()}.
Return formatted table of contents or short table of contents.
@end deftypefn
diff --git a/tp/Texinfo/Convert/HTML.pm b/tp/Texinfo/Convert/HTML.pm
index 9ee82bc4e5..08972f88a8 100644
--- a/tp/Texinfo/Convert/HTML.pm
+++ b/tp/Texinfo/Convert/HTML.pm
@@ -4727,27 +4727,41 @@ sub _default_format_element_header($$$$)
return $result;
}
-sub register_opened_section_level($$$)
+sub register_opened_section_level($$$$)
{
my $self = shift;
+ my $filename = shift;
my $level = shift;
my $close_string = shift;
- while (@{$self->{'pending_closes'}} < $level) {
- push(@{$self->{'pending_closes'}}, "");
+
+ if (!exists($self->{'pending_closes'}->{$filename})) {
+ $self->{'pending_closes'}->{$filename} = [];
}
- push(@{$self->{'pending_closes'}}, $close_string);
+ my $pending_closes = $self->{'pending_closes'}->{$filename};
+ while (@$pending_closes < $level) {
+ push(@$pending_closes, "");
+ }
+ push(@$pending_closes, $close_string);
}
-sub close_registered_sections_level($$)
+sub close_registered_sections_level($$$)
{
my $self = shift;
+ my $filename = shift;
my $level = shift;
+
if (not defined($level)) {
cluck 'close_registered_sections_level $level not defined';
}
+
my @closed_elements;
- while (@{$self->{'pending_closes'}} > $level) {
- my $close_string = pop @{$self->{'pending_closes'}};
+ if (!exists($self->{'pending_closes'}->{$filename})) {
+ return \@closed_elements;
+ }
+
+ my $pending_closes = $self->{'pending_closes'}->{$filename};
+ while (@$pending_closes > $level) {
+ my $close_string = pop @$pending_closes;
push(@closed_elements, $close_string)
if ($close_string ne "");
}
@@ -4992,9 +5006,11 @@ sub _convert_heading_command($$$$$)
# document (cannot happen in main program or test_utils.pl tests)
$level = Texinfo::Common::section_level($opening_section);
}
- my $closed_strings = $self->close_registered_sections_level($level);
+ my $closed_strings = $self->close_registered_sections_level(
+ $self->current_filename(), $level);
$result .= join('', @{$closed_strings});
- $self->register_opened_section_level($level, "</div>\n");
+ $self->register_opened_section_level($self->current_filename(), $level,
+ "</div>\n");
# use a specific class name to mark that this is the start of
# the section extent. It is not necessary where the section is.
@@ -8060,7 +8076,8 @@ sub _convert_special_unit_type($$$$)
my $result = '';
my $special_unit_variety = $output_unit->{'special_unit_variety'};
- my $closed_strings = $self->close_registered_sections_level(0);
+ my $closed_strings = $self->close_registered_sections_level(
+ $self->current_filename(), 0);
$result .= join('', @{$closed_strings});
my $special_unit_body
@@ -8144,7 +8161,8 @@ sub _convert_unit_type($$$$)
and defined($self->get_conf('DEFAULT_RULE')));
# do it here, as it is won't be done at end of page in
# format_element_footer
- my $closed_strings = $self->close_registered_sections_level(0);
+ my $closed_strings = $self->close_registered_sections_level(
+ $self->current_filename(), 0);
$result .= join('', @{$closed_strings});
return $result;
}
@@ -8307,7 +8325,8 @@ sub _default_format_element_footer($$$$;$)
my $buttons;
if ($end_page) {
- my $closed_strings = $self->close_registered_sections_level(0);
+ my $closed_strings = $self->close_registered_sections_level(
+ $self->current_filename(), 0);
$result .= join('', @{$closed_strings});
my $split = $self->get_conf('SPLIT');
@@ -11954,7 +11973,7 @@ sub _initialize_output_state($$)
# other
$self->{'pending_footnotes'} = [];
- $self->{'pending_closes'} = [];
+ $self->{'pending_closes'} = {};
$self->{'css_rule_lines'} = [];
$self->{'css_import_lines'} = [];
diff --git a/tp/Texinfo/XS/convert/ConvertXS.xs
b/tp/Texinfo/XS/convert/ConvertXS.xs
index cefddce0fa..2222f4808d 100644
--- a/tp/Texinfo/XS/convert/ConvertXS.xs
+++ b/tp/Texinfo/XS/convert/ConvertXS.xs
@@ -1472,7 +1472,8 @@ html_get_shared_conversion_state (SV *converter_in,
cmdname, state_name, ...)
RETVAL
void
-html_register_opened_section_level (SV *converter_in, int level, close_string)
+html_register_opened_section_level (SV *converter_in, filename, int level,
close_string)
+ const char *filename = (char *)SvPVutf8_nolen($arg);
const char *close_string = (char *)SvPVutf8_nolen($arg);
PREINIT:
CONVERTER *self;
@@ -1481,11 +1482,13 @@ html_register_opened_section_level (SV *converter_in,
int level, close_string)
"html_register_opened_section_level");
if (self)
{
- html_register_opened_section_level (self, level, close_string);
+ html_register_opened_filename_section_level (self, filename,
+ level, close_string);
}
SV *
-html_close_registered_sections_level (SV *converter_in, int level)
+html_close_registered_sections_level (SV *converter_in, filename, int level)
+ const char *filename = (char *)SvPVutf8_nolen($arg);
PREINIT:
CONVERTER *self;
AV *closed_elements_av;
@@ -1496,7 +1499,8 @@ html_close_registered_sections_level (SV *converter_in,
int level)
if (self)
{
STRING_LIST *closed_elements
- = html_close_registered_sections_level (self, level);
+ = html_close_registered_filename_sections_level (self,
+ filename, level);
if (closed_elements->number > 0)
{
diff --git a/tp/Texinfo/XS/convert/convert_html.c
b/tp/Texinfo/XS/convert/convert_html.c
index b6d7004cec..109b824237 100644
--- a/tp/Texinfo/XS/convert/convert_html.c
+++ b/tp/Texinfo/XS/convert/convert_html.c
@@ -1389,37 +1389,69 @@ html_get_file_information (const CONVERTER *self, const
char *key,
}
void
-html_register_opened_section_level (CONVERTER *self, int level,
- const char *close_string)
+html_register_opened_section_level (CONVERTER *self, size_t file_number,
+ int level, const char *close_string)
{
- STRING_STACK *pending_closes = &self->pending_closes;
+ STRING_STACK *file_pending_closes
+ = &self->pending_closes.list[file_number -1];
- while (pending_closes->top < level)
+ while (file_pending_closes->top < level)
{
- push_string_stack_string (pending_closes, "");
+ push_string_stack_string (file_pending_closes, "");
}
- push_string_stack_string (pending_closes, close_string);
+ push_string_stack_string (file_pending_closes, close_string);
+}
+
+/* called from Perl */
+void
+html_register_opened_filename_section_level (CONVERTER *self,
+ const char *filename,
+ int level, const char *close_string)
+{
+ size_t page_number = find_page_name_number (&self->page_name_number,
+ filename);
+
+ if (!page_number)
+ return;
+
+ html_register_opened_section_level (self, page_number, level, close_string);
}
STRING_LIST *
-html_close_registered_sections_level (CONVERTER *self, int level)
+html_close_registered_sections_level (CONVERTER *self, size_t file_number,
+ int level)
{
- STRING_STACK *pending_closes = &self->pending_closes;
+ STRING_STACK *file_pending_closes
+ = &self->pending_closes.list[file_number -1];
STRING_LIST *closed_elements = new_string_list ();
- while (pending_closes->top > level)
+ while (file_pending_closes->top > level)
{
- const char *close_string = top_string_stack (pending_closes);
+ const char *close_string = top_string_stack (file_pending_closes);
if (strlen (close_string))
{
add_string (close_string, closed_elements);
}
- pop_string_stack (pending_closes);
+ pop_string_stack (file_pending_closes);
}
return closed_elements;
}
+/* called from Perl */
+STRING_LIST *
+html_close_registered_filename_sections_level (CONVERTER *self,
+ const char *filename, int level)
+{
+ size_t page_number = find_page_name_number (&self->page_name_number,
+ filename);
+
+ if (!page_number)
+ return 0;
+
+ return html_close_registered_sections_level (self, page_number, level);
+}
+
OUTPUT_UNIT *
register_special_unit (CONVERTER *self, char *special_unit_variety)
{
@@ -5759,6 +5791,12 @@ html_set_pages_files (CONVERTER *self, const
OUTPUT_UNIT_LIST *output_units,
memset (self->html_files_information.list, 0,
self->html_files_information.number * sizeof (ASSOCIATED_INFO));
+ self->pending_closes.number = self->output_unit_files.number +1;
+ self->pending_closes.list = (STRING_STACK *)
+ malloc (self->pending_closes.number * sizeof (STRING_STACK));
+ memset (self->pending_closes.list, 0,
+ self->pending_closes.number * sizeof (STRING_STACK));
+
return files_source_info;
}
@@ -5781,6 +5819,12 @@ setup_output_simple_page (CONVERTER *self, const char
*output_filename)
memset (self->html_files_information.list, 0,
self->html_files_information.number * sizeof (ASSOCIATED_INFO));
+ self->pending_closes.number = 1+1;
+ self->pending_closes.list = (STRING_STACK *)
+ malloc (self->pending_closes.number * sizeof (STRING_STACK));
+ memset (self->pending_closes.list, 0,
+ self->pending_closes.number * sizeof (STRING_STACK));
+
self->page_name_number.number = 1;
self->page_name_number.list = (PAGE_NAME_NUMBER *)
malloc (self->page_name_number.number * sizeof (PAGE_NAME_NUMBER));
@@ -8222,7 +8266,8 @@ html_default_format_element_footer (CONVERTER *self,
if (end_page)
{
STRING_LIST *closed_strings;
- closed_strings = html_close_registered_sections_level (self, 0);
+ closed_strings = html_close_registered_sections_level (self,
+ self->current_filename.file_number, 0);
if (closed_strings->number)
{
@@ -10295,7 +10340,8 @@ convert_heading_command (CONVERTER *self, const enum
command_id cmd,
if (status != 0)
level = section_level (opening_section);
- closed_strings = html_close_registered_sections_level (self, level);
+ closed_strings = html_close_registered_sections_level (self,
+ self->current_filename.file_number, level);
if (closed_strings->number)
{
@@ -10309,7 +10355,8 @@ convert_heading_command (CONVERTER *self, const enum
command_id cmd,
free (closed_strings->list);
free (closed_strings);
- html_register_opened_section_level (self, level, "</div>\n");
+ html_register_opened_section_level (self,
+ self->current_filename.file_number, level, "</div>\n");
/* use a specific class name to mark that this is the start of
the section extent. It is not necessary where the section is. */
@@ -15390,7 +15437,8 @@ convert_unit_type (CONVERTER *self, const enum
output_unit_type unit_type,
/* do it here, as it is won't be done at end of page in
format_element_footer */
- closed_strings = html_close_registered_sections_level (self, 0);
+ closed_strings = html_close_registered_sections_level (self,
+ self->current_filename.file_number, 0);
if (closed_strings->number)
{
@@ -15444,7 +15492,8 @@ convert_special_unit_type (CONVERTER *self,
number = find_string (&self->special_unit_varieties,
special_unit_variety);
- closed_strings = html_close_registered_sections_level (self, 0);
+ closed_strings = html_close_registered_sections_level (self,
+ self->current_filename.file_number, 0);
if (closed_strings->number)
{
@@ -17110,17 +17159,25 @@ html_conversion_finalization (CONVERTER *self)
free (self->html_files_information.list);
/* should not be possible with default code, as
- close_registered_sections_level(0)
+ close_registered_sections_level(..., 0)
is called at the end of processing or at the end of each file.
However, it could happen if the conversion functions are user
defined.
*/
- if (self->pending_closes.top > 0)
+ for (i = 0; i < self->pending_closes.number; i++)
{
- message_list_document_warn (&self->error_messages, self->conf, 0,
- "%zu registered opened sections not closed",
- self->pending_closes.top);
- clear_string_stack (&self->pending_closes);
+ STRING_STACK *file_pending_closes = &self->pending_closes.list[i];
+ if (file_pending_closes->top > 0)
+ {
+ FILE_NAME_PATH_COUNTER *file_counter
+ = &self->output_unit_files.list[i];
+ const char *page_name = file_counter->filename;
+
+ message_list_document_warn (&self->error_messages, self->conf, 0,
+ "%s: %zu registered opened sections not closed",
+ page_name, file_pending_closes->top);
+ clear_string_stack (file_pending_closes);
+ }
}
if (self->pending_inline_content.top > 0)
@@ -17513,7 +17570,13 @@ html_free_converter (CONVERTER *self)
free (self->style_formatted_cmd.list);
- free (self->pending_closes.stack);
+ for (i = 0; i < self->pending_closes.number; i++)
+ {
+ STRING_STACK *file_pending_closes = &self->pending_closes.list[i];
+ free (file_pending_closes->stack);
+ }
+ free (self->pending_closes.list);
+
free (self->pending_inline_content.stack);
free (self->associated_inline_content.list);
diff --git a/tp/Texinfo/XS/convert/convert_html.h
b/tp/Texinfo/XS/convert/convert_html.h
index 2b801acdd8..fcb92df6ef 100644
--- a/tp/Texinfo/XS/convert/convert_html.h
+++ b/tp/Texinfo/XS/convert/convert_html.h
@@ -153,10 +153,16 @@ void register_explained_command_string (
FOOTNOTE_ID_NUMBER *find_footnote_id_number (const CONVERTER *self,
const char *footnote_id);
-void html_register_opened_section_level (CONVERTER *self, int level,
- const char *close_string);
+void html_register_opened_section_level (CONVERTER *self, size_t file_number,
+ int level, const char *close_string);
STRING_LIST *html_close_registered_sections_level (CONVERTER *self,
+ size_t file_number,
int level);
+void html_register_opened_filename_section_level (CONVERTER *self,
+ const char *filename,
+ int level, const char *close_string);
+STRING_LIST *html_close_registered_filename_sections_level (CONVERTER *self,
+ const char *filename, int level);
char *html_attribute_class (CONVERTER *self, const char *element,
const STRING_LIST *classes);
diff --git a/tp/Texinfo/XS/main/converter_types.h
b/tp/Texinfo/XS/main/converter_types.h
index f4f43a8846..1077cfab92 100644
--- a/tp/Texinfo/XS/main/converter_types.h
+++ b/tp/Texinfo/XS/main/converter_types.h
@@ -664,6 +664,11 @@ typedef struct ASSOCIATED_INFO_LIST {
ASSOCIATED_INFO *list;
} ASSOCIATED_INFO_LIST;
+typedef struct STRING_STACK_LIST {
+ size_t number;
+ STRING_STACK *list;
+} STRING_STACK_LIST;
+
typedef struct JSLICENSE_FILE_INFO {
char *filename;
char *license;
@@ -824,7 +829,7 @@ typedef struct CONVERTER {
const OUTPUT_UNIT *current_output_unit;
HTML_DOCUMENT_CONTEXT_STACK html_document_context;
STRING_STACK multiple_pass;
- STRING_STACK pending_closes;
+ STRING_STACK_LIST pending_closes;
FILE_NUMBER_NAME current_filename;
ELEMENT_REFERENCE_STACK referred_command_stack;
HTML_SHARED_CONVERSION_STATE shared_conversion_state;
diff --git a/tp/init/book.pm b/tp/init/book.pm
index f1ab79a116..c2d0da4911 100644
--- a/tp/init/book.pm
+++ b/tp/init/book.pm
@@ -378,9 +378,11 @@ sub book_convert_heading_command($$$$$)
# document (cannot happen in main program or test_utils.pl tests)
$level = Texinfo::Common::section_level($opening_section);
}
- my $closed_strings = $self->close_registered_sections_level($level);
+ my $closed_strings = $self->close_registered_sections_level(
+ $self->current_filename(), $level);
$result .= join('', @{$closed_strings});
- $self->register_opened_section_level($level, "</div>\n");
+ $self->register_opened_section_level($self->current_filename(), $level,
+ "</div>\n");
# use a specific class name to mark that this is the start of
# the section extent. It is not necessary where the section is.
diff --git
a/tp/t/results/html_tests/file_name_case_insensitive_conflict_node/res_html/Bar.html
b/tp/t/results/html_tests/file_name_case_insensitive_conflict_node/res_html/Bar.html
index ebabc873c4..b351bc7277 100644
---
a/tp/t/results/html_tests/file_name_case_insensitive_conflict_node/res_html/Bar.html
+++
b/tp/t/results/html_tests/file_name_case_insensitive_conflict_node/res_html/Bar.html
@@ -26,7 +26,6 @@ span:hover a.copiable-link {visibility: visible}
</head>
<body lang="en">
-</div>
<div class="section-level-extent" id="Bar">
<div class="nav-panel">
<p>
diff --git
a/tp/t/results/html_tests/file_name_case_insensitive_conflict_node/res_html/Foo.html
b/tp/t/results/html_tests/file_name_case_insensitive_conflict_node/res_html/Foo.html
index 4d05375cb2..e43cf121c6 100644
---
a/tp/t/results/html_tests/file_name_case_insensitive_conflict_node/res_html/Foo.html
+++
b/tp/t/results/html_tests/file_name_case_insensitive_conflict_node/res_html/Foo.html
@@ -34,6 +34,7 @@ Next: <a href="Bar.html" accesskey="n" rel="next">Bar</a>,
Up: <a href="chap.htm
<h3 class="section" id="Foo-1"><span>1.1 Foo<a class="copiable-link"
href="#Foo-1"> ¶</a></span></h3>
<hr>
+</div>
<div class="section-level-extent" id="foo">
<div class="nav-panel">
<p>
diff --git
a/tp/t/results/html_tests/file_name_case_insensitive_conflict_node_no_redirections/res_html/Bar.html
b/tp/t/results/html_tests/file_name_case_insensitive_conflict_node_no_redirections/res_html/Bar.html
index ebabc873c4..b351bc7277 100644
---
a/tp/t/results/html_tests/file_name_case_insensitive_conflict_node_no_redirections/res_html/Bar.html
+++
b/tp/t/results/html_tests/file_name_case_insensitive_conflict_node_no_redirections/res_html/Bar.html
@@ -26,7 +26,6 @@ span:hover a.copiable-link {visibility: visible}
</head>
<body lang="en">
-</div>
<div class="section-level-extent" id="Bar">
<div class="nav-panel">
<p>
diff --git
a/tp/t/results/html_tests/file_name_case_insensitive_conflict_node_no_redirections/res_html/Foo.html
b/tp/t/results/html_tests/file_name_case_insensitive_conflict_node_no_redirections/res_html/Foo.html
index 4d05375cb2..e43cf121c6 100644
---
a/tp/t/results/html_tests/file_name_case_insensitive_conflict_node_no_redirections/res_html/Foo.html
+++
b/tp/t/results/html_tests/file_name_case_insensitive_conflict_node_no_redirections/res_html/Foo.html
@@ -34,6 +34,7 @@ Next: <a href="Bar.html" accesskey="n" rel="next">Bar</a>,
Up: <a href="chap.htm
<h3 class="section" id="Foo-1"><span>1.1 Foo<a class="copiable-link"
href="#Foo-1"> ¶</a></span></h3>
<hr>
+</div>
<div class="section-level-extent" id="foo">
<div class="nav-panel">
<p>
diff --git
a/tp/t/results/html_tests/simple_only_special_spaces_node/res_html/-.html
b/tp/t/results/html_tests/simple_only_special_spaces_node/res_html/-.html
index 3cad1fcbb0..1f970a31e9 100644
--- a/tp/t/results/html_tests/simple_only_special_spaces_node/res_html/-.html
+++ b/tp/t/results/html_tests/simple_only_special_spaces_node/res_html/-.html
@@ -29,6 +29,7 @@ span:hover a.copiable-link {visibility: visible}
<h2 class="chapter" id="EN-QUAD_007c-_007c"><span>1 EN QUAD| |<a
class="copiable-link" href="#EN-QUAD_007c-_007c"> ¶</a></span></h2>
<hr>
+</div>
<div class="chapter-level-extent" id="g_t_2004_2005">
<h2 class="chapter" id="THREE_002dPER_002dEM-SPACE"><span>3 THREE-PER-EM
SPACE<a class="copiable-link" href="#THREE_002dPER_002dEM-SPACE">
¶</a></span></h2>
diff --git
a/tp/t/results/html_tests/simple_only_special_spaces_node/res_html/unknown_node.html
b/tp/t/results/html_tests/simple_only_special_spaces_node/res_html/unknown_node.html
index 4d79777da1..fd0cd17fcd 100644
---
a/tp/t/results/html_tests/simple_only_special_spaces_node/res_html/unknown_node.html
+++
b/tp/t/results/html_tests/simple_only_special_spaces_node/res_html/unknown_node.html
@@ -23,7 +23,6 @@ span:hover a.copiable-link {visibility: visible}
</head>
<body lang="en">
-</div>
<div class="chapter-level-extent">
<h2 class="chapter" id="CARRIAGE-RETURN_007c-_007c"><span>2 CARRIAGE RETURN|
|<a class="copiable-link" href="#CARRIAGE-RETURN_007c-_007c">
¶</a></span></h2>
diff --git
a/tp/t/results/html_tests/top_file_name_and_node_name_collision/res_html/my-node.html
b/tp/t/results/html_tests/top_file_name_and_node_name_collision/res_html/my-node.html
index dd1b83b622..98de542d15 100644
---
a/tp/t/results/html_tests/top_file_name_and_node_name_collision/res_html/my-node.html
+++
b/tp/t/results/html_tests/top_file_name_and_node_name_collision/res_html/my-node.html
@@ -33,6 +33,7 @@ Next: <a href="other-node.html" accesskey="n"
rel="next">chapter</a> </p>
<h2 class="chapter" id="chap-my-node"><span>1 chap my node<a
class="copiable-link" href="#chap-my-node"> ¶</a></span></h2>
<hr>
+</div>
<div class="unnumbered-level-extent" id="top">
<div class="nav-panel">
<p>
diff --git
a/tp/t/results/html_tests/top_file_name_and_node_name_collision/res_html/other-node.html
b/tp/t/results/html_tests/top_file_name_and_node_name_collision/res_html/other-node.html
index a5cd84d5c3..9735253e8b 100644
---
a/tp/t/results/html_tests/top_file_name_and_node_name_collision/res_html/other-node.html
+++
b/tp/t/results/html_tests/top_file_name_and_node_name_collision/res_html/other-node.html
@@ -24,7 +24,6 @@ span:hover a.copiable-link {visibility: visible}
</head>
<body lang="en">
-</div>
<div class="chapter-level-extent" id="other-node">
<div class="nav-panel">
<p>
diff --git
a/tp/t/results/layout/navigation_test_misc_file_collision/res_html/chapter.html
b/tp/t/results/layout/navigation_test_misc_file_collision/res_html/chapter.html
index 883e0c59e0..dc7d61c2c5 100644
---
a/tp/t/results/layout/navigation_test_misc_file_collision/res_html/chapter.html
+++
b/tp/t/results/layout/navigation_test_misc_file_collision/res_html/chapter.html
@@ -50,7 +50,6 @@ td.menu-entry-destination {vertical-align: top}
</td></tr>
</table>
-</div>
</div>
<hr>
<p>
diff --git
a/tp/t/results/layout/navigation_test_misc_file_collision/res_html/navigation_abt.html
b/tp/t/results/layout/navigation_test_misc_file_collision/res_html/navigation_abt.html
index 51ddceeeec..f58f5d1d93 100644
---
a/tp/t/results/layout/navigation_test_misc_file_collision/res_html/navigation_abt.html
+++
b/tp/t/results/layout/navigation_test_misc_file_collision/res_html/navigation_abt.html
@@ -97,6 +97,8 @@ b b b b b b b b b b b b b b b b b b b b b bb b b b b b b bb
b bb.
</table>
<hr>
+</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>
diff --git
a/tp/t/results/layout/navigation_test_misc_file_collision/res_html/subsection.html
b/tp/t/results/layout/navigation_test_misc_file_collision/res_html/subsection.html
index 10eee53d7a..f2cf3a47f8 100644
---
a/tp/t/results/layout/navigation_test_misc_file_collision/res_html/subsection.html
+++
b/tp/t/results/layout/navigation_test_misc_file_collision/res_html/subsection.html
@@ -44,7 +44,6 @@ span:hover a.copiable-link {visibility: visible}
<h3 class="subsection" id="Sub-section-in-section"><span>1.1.1 Sub section in
section<a class="copiable-link" href="#Sub-section-in-section">
¶</a></span></h3>
-</div>
</div>
<hr>
<p>
diff --git
a/tp/t/results/sectioning/transliterated_split_equivalent_nodes/res_html/a.html
b/tp/t/results/sectioning/transliterated_split_equivalent_nodes/res_html/a.html
index 93ab854558..b158693b1d 100644
---
a/tp/t/results/sectioning/transliterated_split_equivalent_nodes/res_html/a.html
+++
b/tp/t/results/sectioning/transliterated_split_equivalent_nodes/res_html/a.html
@@ -40,6 +40,7 @@ Next: <a href="n.html" accesskey="n" rel="next">n</a>,
Previous: <a href="index.
Previous: <a href="n.html" accesskey="p" rel="prev">n</a>, Up: <a
href="index.html" accesskey="u" rel="up">top</a> </p>
</div>
<h4 class="node"><span>â<a class="copiable-link" href="#g_t_00e2">
¶</a></span></h4>
+</div>
diff --git
a/tp/t/results/sectioning/transliterated_split_equivalent_nodes/res_html/n.html
b/tp/t/results/sectioning/transliterated_split_equivalent_nodes/res_html/n.html
index 0e3c1d0de2..870bd5f3b9 100644
---
a/tp/t/results/sectioning/transliterated_split_equivalent_nodes/res_html/n.html
+++
b/tp/t/results/sectioning/transliterated_split_equivalent_nodes/res_html/n.html
@@ -33,7 +33,6 @@ Next: <a href="a.html#g_t_00e2" accesskey="n"
rel="next">â</a>, Previous:
<hr>
<h4 class="node"><span>n<a class="copiable-link" href="#n">
¶</a></span></h4>
-</div>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- branch master updated: * doc/texi2any_api.texi (Heading Commands Formatting), tp/Texinfo/Convert/HTML.pm (register_opened_section_level) (close_registered_sections_level, _initialize_output_state), tp/Texinfo/XS/convert/ConvertXS.xs (html_register_opened_section_level) (html_close_registered_sections_level), tp/Texinfo/XS/convert/convert_html.c (html_register_opened_section_level) (html_register_opened_filename_section_level) (html_close_registered_sections_level) (html_close_registered_filename_sections_level, [...],
Patrice Dumas <=