|
From: <mi...@us...> - 2022-11-28 23:55:50
|
Revision: 9282
http://sourceforge.net/p/docutils/code/9282
Author: milde
Date: 2022-11-28 23:55:46 +0000 (Mon, 28 Nov 2022)
Log Message:
-----------
Wrap definition lists with "details" class argument in a <div>
with the "id" and "class" values of the list node.
Enables setting an "anchor" or a "class" value for "detail disclosure elments".
Modified Paths:
--------------
trunk/docutils/HISTORY.txt
trunk/docutils/docutils/writers/_html_base.py
trunk/docutils/docutils/writers/html4css1/__init__.py
trunk/docutils/test/functional/expected/standalone_rst_html5.html
trunk/docutils/test/functional/input/data/html5-features.txt
Modified: trunk/docutils/HISTORY.txt
===================================================================
--- trunk/docutils/HISTORY.txt 2022-11-28 23:55:35 UTC (rev 9281)
+++ trunk/docutils/HISTORY.txt 2022-11-28 23:55:46 UTC (rev 9282)
@@ -65,6 +65,9 @@
Changes to the HTML output (no space character before closing tag of
XML declaration, order of metadata elements)
don't affect the HTML semantics, styling, and rendering.
+
+ - Wrap definition lists with "details" class argument in a <div>
+ with the "id" and "class" values of the list node.
* docutils/writers/latex2e/__init__.py
Modified: trunk/docutils/docutils/writers/_html_base.py
===================================================================
--- trunk/docutils/docutils/writers/_html_base.py 2022-11-28 23:55:35 UTC (rev 9281)
+++ trunk/docutils/docutils/writers/_html_base.py 2022-11-28 23:55:46 UTC (rev 9282)
@@ -740,7 +740,7 @@
pass
def visit_definition(self, node):
- if "details" in node.parent.parent['classes']:
+ if 'details' in node.parent.parent['classes']:
self.body.append('</summary>\n')
else:
self.body.append('</dt>\n')
@@ -747,21 +747,25 @@
self.body.append(self.starttag(node, 'dd', ''))
def depart_definition(self, node):
- if "details" not in node.parent.parent['classes']:
+ if 'details' not in node.parent.parent['classes']:
self.body.append('</dd>\n')
def visit_definition_list(self, node):
- if "details" not in node['classes']:
+ if 'details' in node['classes']:
+ self.body.append(self.starttag(node, 'div'))
+ else:
classes = ['simple'] if self.is_compactable(node) else []
self.body.append(self.starttag(node, 'dl', classes=classes))
def depart_definition_list(self, node):
- if "details" not in node['classes']:
+ if 'details' in node['classes']:
+ self.body.append('</div>\n')
+ else:
self.body.append('</dl>\n')
# Use a "details" disclosure element if parent has "class" arg "details".
def visit_definition_list_item(self, node):
- if "details" in node.parent['classes']:
+ if 'details' in node.parent['classes']:
atts = {}
if "open" in node.parent['classes']:
atts['open'] = 'open'
@@ -768,7 +772,7 @@
self.body.append(self.starttag(node, 'details', **atts))
def depart_definition_list_item(self, node):
- if "details" in node.parent['classes']:
+ if 'details' in node.parent['classes']:
self.body.append('</details>\n')
def visit_description(self, node):
@@ -1599,11 +1603,11 @@
self.body.append('</tbody>\n')
def visit_term(self, node):
- if "details" in node.parent.parent['classes']:
- self.body.append(self.starttag(node, 'summary', ''))
+ if 'details' in node.parent.parent['classes']:
+ self.body.append(self.starttag(node, 'summary', suffix=''))
else:
# The parent node (definition_list_item) is omitted in HTML.
- self.body.append(self.starttag(node, 'dt', '',
+ self.body.append(self.starttag(node, 'dt', suffix='',
classes=node.parent['classes'],
ids=node.parent['ids']))
Modified: trunk/docutils/docutils/writers/html4css1/__init__.py
===================================================================
--- trunk/docutils/docutils/writers/html4css1/__init__.py 2022-11-28 23:55:35 UTC (rev 9281)
+++ trunk/docutils/docutils/writers/html4css1/__init__.py 2022-11-28 23:55:46 UTC (rev 9282)
@@ -300,7 +300,7 @@
def depart_definition(self, node):
self.body.append('</dd>\n')
- # don't add "simple" class value
+ # don't add "simple" class value, no special handling of "details"
def visit_definition_list(self, node):
self.body.append(self.starttag(node, 'dl', CLASS='docutils'))
Modified: trunk/docutils/test/functional/expected/standalone_rst_html5.html
===================================================================
--- trunk/docutils/test/functional/expected/standalone_rst_html5.html 2022-11-28 23:55:35 UTC (rev 9281)
+++ trunk/docutils/test/functional/expected/standalone_rst_html5.html 2022-11-28 23:55:46 UTC (rev 9282)
@@ -1342,15 +1342,19 @@
<h4><a class="toc-backref" href="#toc-entry-47" role="doc-backlink"><span class="sectnum">3.2.2 </span>Details disclosure elements</a></h4>
<p>Items of <a class="reference internal" href="#definition-lists">definition lists</a> with class argument "details" are converted
to <a class="reference external" href="https://www.w3.org/TR/html52/interactive-elements.html#the-details-element">details</a> <a class="footnote-reference brackets" href="#footnote-9" id="footnote-reference-22" role="doc-noteref"><span class="fn-bracket">[</span>9<span class="fn-bracket">]</span></a> disclosure elements with the term becoming the "summary".</p>
+<div class="details" id="closed-details">
<details>
<summary>A summary</summary>
<p>with details only visible after user interaction.</p>
</details>
+</div>
+<div class="details open" id="open-details">
<details open="open">
<summary>Another summary</summary>
<p>with open details because the source list has the additional class
value "open".</p>
</details>
+</div>
</section>
<section id="field-list-variants">
<h4><a class="toc-backref" href="#toc-entry-48" role="doc-backlink"><span class="sectnum">3.2.3 </span>Field List Variants</a></h4>
Modified: trunk/docutils/test/functional/input/data/html5-features.txt
===================================================================
--- trunk/docutils/test/functional/input/data/html5-features.txt 2022-11-28 23:55:35 UTC (rev 9281)
+++ trunk/docutils/test/functional/input/data/html5-features.txt 2022-11-28 23:55:46 UTC (rev 9282)
@@ -102,11 +102,13 @@
Items of `definition lists`_ with class argument "details" are converted
to `details`_ disclosure elements with the term becoming the "summary".
+.. _closed-details:
.. class:: details
A summary
with details only visible after user interaction.
+.. _open-details:
.. class:: details open
Another summary
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|