From 583061a10fad5445d8597fc5da56705e5bb21d11 Mon Sep 17 00:00:00 2001
From: Fred Drake <fdrake@acm.org>
Date: Sat, 29 Sep 2001 05:05:25 +0000
Subject: Fix up whitespace in <args> elements; reduce sequences of consecutive
 whitespace characters to a single space. Small changes elsewhere, mostly to
 clean up the code a little.

---
 Doc/tools/sgmlconv/docfixer.py | 32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/Doc/tools/sgmlconv/docfixer.py b/Doc/tools/sgmlconv/docfixer.py
index 1760cf3..f2ad181 100755
--- a/Doc/tools/sgmlconv/docfixer.py
+++ b/Doc/tools/sgmlconv/docfixer.py
@@ -389,20 +389,16 @@ def cleanup_trailing_parens(doc, element_names):
     for gi in element_names:
         d[gi] = gi
     rewrite_element = d.has_key
-    queue = []
-    for node in doc.childNodes:
-        if node.nodeType == ELEMENT:
-            queue.append(node)
+    queue = [node for node in doc.childNodes if node.nodeType == ELEMENT]
     while queue:
         node = queue[0]
         del queue[0]
         if rewrite_element(node.tagName):
-            children = node.childNodes
-            if len(children) == 1 \
-               and children[0].nodeType == TEXT:
-                data = children[0].data
-                if data[-2:] == "()":
-                    children[0].data = data[:-2]
+            lastchild = node.lastChild
+            if lastchild and lastchild.nodeType == TEXT:
+                data = lastchild.data
+                if data.endswith("()"):
+                    lastchild.data = data[:-2]
         else:
             for child in node.childNodes:
                 if child.nodeType == ELEMENT:
@@ -773,13 +769,17 @@ def fixup_signatures(doc, fragment):
         if child.nodeType == ELEMENT:
             args = child.getElementsByTagName("args")
             for arg in args:
-                fixup_args(doc, arg)
-                arg.normalize()
+                rewrite_args(doc, arg)
             args = child.getElementsByTagName("constructor-args")
             for arg in args:
-                fixup_args(doc, arg)
-                arg.normalize()
+                rewrite_args(doc, arg)
 
+def rewrite_args(doc, arglist):
+    fixup_args(doc, arglist)
+    arglist.normalize()
+    if arglist.childNodes.length == 1 and arglist.firstChild.nodeType == TEXT:
+        node = arglist.firstChild
+        node.data = ' '.join(node.data.split())
 
 def fixup_args(doc, arglist):
     for child in arglist.childNodes:
@@ -788,9 +788,7 @@ def fixup_args(doc, arglist):
             arglist.insertBefore(doc.createTextNode("["), child)
             optkids = child.childNodes
             while optkids:
-                k = optkids[0]
-                child.removeChild(k)
-                arglist.insertBefore(k, child)
+                arglist.insertBefore(child.firstChild, child)
             arglist.insertBefore(doc.createTextNode("]"), child)
             arglist.removeChild(child)
             return fixup_args(doc, arglist)
-- 
cgit v0.12

