SF.net SVN: docutils:[9970] trunk/docutils

milde--- via Docutils-checkins <[email protected]>
Newsgroups gmane.text.docutils.cvs
Message-ID <[email protected]>
Revision: 9970
          http://sourceforge.net/p/docutils/code/9970
Author:   milde
Date:     2024-10-26 09:15:18 +0000 (Sat, 26 Oct 2024)
Log Message:
-----------
Fix recursion in `nodes.Element.get_language_code()`.

Because of a typo, `Element.get_language_code()` did not find language
tags in parent elements but just return the fallback value.

Thanks to Marcello Perathoner for the report.
http://permalink.gmane.org/gmane.text.docutils.devel/10544

Modified Paths:
--------------
    trunk/docutils/HISTORY.rst
    trunk/docutils/docutils/nodes.py
    trunk/docutils/test/test_nodes.py

Modified: trunk/docutils/HISTORY.rst
===================================================================
--- trunk/docutils/HISTORY.rst	2024-10-25 22:46:34 UTC (rev 9969)
+++ trunk/docutils/HISTORY.rst	2024-10-26 09:15:18 UTC (rev 9970)
@@ -68,6 +68,7 @@
   - New function `parse_measure()`.
   - Removed `Element.set_class()`.
   - Downgrade "duplicate ID" message level from SERIOUS to ERROR.
+  - Fix recursion in `Element.get_language_code()`.
 
 * docutils/parsers/docutils_xml.py
 

Modified: trunk/docutils/docutils/nodes.py
===================================================================
--- trunk/docutils/docutils/nodes.py	2024-10-25 22:46:34 UTC (rev 9969)
+++ trunk/docutils/docutils/nodes.py	2024-10-26 09:15:18 UTC (rev 9970)
@@ -813,7 +813,7 @@
             if cls.startswith('language-'):
                 return cls.removeprefix('language-')
         try:
-            return self.parent.get_language(fallback)
+            return self.parent.get_language_code(fallback)
         except AttributeError:
             return fallback
 

Modified: trunk/docutils/test/test_nodes.py
===================================================================
--- trunk/docutils/test/test_nodes.py	2024-10-25 22:46:34 UTC (rev 9969)
+++ trunk/docutils/test/test_nodes.py	2024-10-26 09:15:18 UTC (rev 9970)
@@ -240,6 +240,15 @@
         element.clear()
         self.assertTrue(not len(element))
 
+    def test_get_language_code(self):
+        # Return language tag from node or parents
+        parent = nodes.Element(classes=['parental', 'language-pt-BR'])
+        self.assertEqual(parent.get_language_code('en'), 'pt-BR')
+        child = nodes.Element(classes=['small'])
+        self.assertEqual(child.get_language_code('en'), 'en')
+        parent.append(child)
+        self.assertEqual(child.get_language_code('en'), 'pt-BR')
+
     def test_normal_attributes(self):
         element = nodes.Element()
         self.assertTrue('foo' not in element)

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.