[Zope-Checkins] CVS: Zope/lib/python/StructuredText - ClassicDocumentClass.py:1.25.8.1 DocumentClass.py:1.49.8.1 STDOM.py:1.7.8.1 __init__.py:1.9.8.1

Florent Guillaume fg@nuxeo.com
Mon, 16 Sep 2002 21:10:19 -0400


Update of /cvs-repository/Zope/lib/python/StructuredText
In directory cvs.zope.org:/tmp/cvs-serv18502

Modified Files:
      Tag: Zope-2_6-i18n-branch
	ClassicDocumentClass.py DocumentClass.py STDOM.py __init__.py 
Log Message:
Unicode fixes for StructuredText.

This makes the code run, but ST still uses the Zope locale to get
'letters', when it probably should use \w+ and re.U on any Unicode
strings. So currently non-ascii alphabetic Unicode characters in a stx
document are still treated as non-alphabetic.



=== Zope/lib/python/StructuredText/ClassicDocumentClass.py 1.25 => 1.25.8.1 ===
--- Zope/lib/python/StructuredText/ClassicDocumentClass.py:1.25	Wed Aug 14 17:58:22 2002
+++ Zope/lib/python/StructuredText/ClassicDocumentClass.py	Mon Sep 16 21:10:18 2002
@@ -14,8 +14,8 @@
 import re, ST, STDOM
 from STletters import letters
 
-StringType=type('')
-ListType=type([])
+from types import StringType, UnicodeType, ListType
+StringTypes = (StringType, UnicodeType)
 
 class StructuredTextExample(ST.StructuredTextParagraph):
     """Represents a section of document with literal text, as for examples"""
@@ -235,7 +235,7 @@
         ]
 
     def __call__(self, doc):
-        if type(doc) is type(''):
+        if type(doc) in StringTypes:
             doc=ST.StructuredText(doc)
             doc.setSubparagraphs(self.color_paragraphs(
                doc.getSubparagraphs()))
@@ -245,7 +245,7 @@
         return doc
 
     def parse(self, raw_string, text_type,
-              type=type, st=type(''), lt=type([])):
+              type=type, sts=StringTypes, lt=type([])):
 
         """
         Parse accepts a raw_string, an expr to test the raw_string,
@@ -261,7 +261,7 @@
         tmp = []    # the list to be returned if raw_string is split
         append=tmp.append
 
-        if type(text_type) is st: text_type=getattr(self, text_type)
+        if type(text_type) in sts: text_type=getattr(self, text_type)
 
         while 1:
             t = text_type(raw_string)
@@ -272,7 +272,7 @@
             if start: append(raw_string[0:start])
 
             tt=type(t)
-            if tt is st:
+            if tt in sts:
                 # if we get a string back, add it to text to be parsed
                 raw_string = t+raw_string[end:len(raw_string)]
             else:
@@ -299,12 +299,12 @@
 
         for text_type in types:
 
-            if type(str) is StringType:
+            if type(str) in StringTypes:
                 str = self.parse(str, text_type)
             elif type(str) is ListType:
                 r=[]; a=r.append
                 for s in str:
-                    if type(s) is StringType:
+                    if type(s) in StringTypes:
                         s=self.parse(s, text_type)
                         if type(s) is ListType: r[len(r):]=s
                         else: a(s)
@@ -327,7 +327,7 @@
 
     def color_paragraphs(self, raw_paragraphs,
                            type=type, sequence_types=(type([]), type(())),
-                           st=type('')):
+                           sts=StringTypes):
         result=[]
         for paragraph in raw_paragraphs:
 
@@ -336,7 +336,7 @@
                 continue
 
             for pt in self.paragraph_types:
-                if type(pt) is st:
+                if type(pt) in sts:
                     # grab the corresponding function
                     pt=getattr(self, pt)
                 # evaluate the paragraph


=== Zope/lib/python/StructuredText/DocumentClass.py 1.49 => 1.49.8.1 ===
--- Zope/lib/python/StructuredText/DocumentClass.py:1.49	Wed Aug 14 17:58:22 2002
+++ Zope/lib/python/StructuredText/DocumentClass.py	Mon Sep 16 21:10:18 2002
@@ -15,8 +15,8 @@
 from STletters import letters, digits, literal_punc, under_punc,\
      strongem_punc, phrase_delimiters,dbl_quoted_punc
 
-StringType=type('')
-ListType=type([])
+from types import StringType, UnicodeType, ListType
+StringTypes = (StringType, UnicodeType)
 
 def flatten(obj, append):
     if obj.getNodeType()==STDOM.TEXT_NODE:
@@ -308,7 +308,7 @@
         ]
 
     def __call__(self, doc):
-        if type(doc) is type(''):
+        if type(doc) in StringTypes:
             doc=ST.StructuredText(doc)
             doc.setSubparagraphs(self.color_paragraphs(
                doc.getSubparagraphs()))
@@ -318,7 +318,7 @@
         return doc
 
     def parse(self, raw_string, text_type,
-              type=type, st=type(''), lt=type([])):
+              type=type, sts=StringTypes, lt=type([])):
 
         """
         Parse accepts a raw_string, an expr to test the raw_string,
@@ -334,7 +334,7 @@
         tmp = []    # the list to be returned if raw_string is split
         append=tmp.append
 
-        if type(text_type) is st: text_type=getattr(self, text_type)
+        if type(text_type) in sts: text_type=getattr(self, text_type)
 
         while 1:
             t = text_type(raw_string)
@@ -345,7 +345,7 @@
             if start: append(raw_string[0:start])
 
             tt=type(t)
-            if tt is st:
+            if tt in sts:
                 # if we get a string back, add it to text to be parsed
                 raw_string = t+raw_string[end:len(raw_string)]
             else:
@@ -372,12 +372,12 @@
 
         for text_type in types:
 
-            if type(str) is StringType:
+            if type(str) in StringTypes:
                 str = self.parse(str, text_type)
             elif type(str) is ListType:
                 r=[]; a=r.append
                 for s in str:
-                    if type(s) is StringType:
+                    if type(s) in StringTypes:
                         s=self.parse(s, text_type)
                         if type(s) is ListType: r[len(r):]=s
                         else: a(s)
@@ -400,7 +400,7 @@
 
     def color_paragraphs(self, raw_paragraphs,
                            type=type, sequence_types=(type([]), type(())),
-                           st=type('')):
+                           sts=StringTypes):
         result=[]
         for paragraph in raw_paragraphs:
             if paragraph.getNodeName() != 'StructuredTextParagraph':
@@ -408,7 +408,7 @@
                 continue
 
             for pt in self.paragraph_types:
-                if type(pt) is st:
+                if type(pt) in sts:
                     # grab the corresponding function
                     pt=getattr(self, pt)
                 # evaluate the paragraph


=== Zope/lib/python/StructuredText/STDOM.py 1.7 => 1.7.8.1 ===
--- Zope/lib/python/StructuredText/STDOM.py:1.7	Wed Aug 14 17:58:22 2002
+++ Zope/lib/python/StructuredText/STDOM.py	Mon Sep 16 21:10:18 2002
@@ -16,6 +16,9 @@
 All standard Zope objects support DOM to a limited extent.
 """
 
+from types import StringType, UnicodeType
+StringTypes = (StringType, UnicodeType)
+
 # Node type codes
 # ---------------
 
@@ -81,7 +84,7 @@
     the child access methods of the DOM.
     """
 
-    def getChildNodes(self, type=type, st=type('')):
+    def getChildNodes(self, type=type, sts=StringTypes):
         """
         Returns a NodeList that contains all children of this node.
         If there are no children, this is a empty NodeList
@@ -89,12 +92,12 @@
 
         r=[]
         for n in self.getChildren():
-            if type(n) is st: n=TextNode(n)
+            if type(n) in sts: n=TextNode(n)
             r.append(n.__of__(self))
 
         return  NodeList(r)
 
-    def getFirstChild(self, type=type, st=type('')):
+    def getFirstChild(self, type=type, sts=StringTypes):
         """
         The first child of this node. If there is no such node
         this returns None
@@ -106,12 +109,12 @@
 
         n=children[0]
 
-        if type(n) is st:
+        if type(n) in sts:
             n=TextNode(n)
 
         return n.__of__(self)
 
-    def getLastChild(self, type=type, st=type('')):
+    def getLastChild(self, type=type, sts=StringTypes):
         """
         The last child of this node.  If there is no such node
         this returns None.
@@ -119,21 +122,21 @@
         children = self.getChildren()
         if not children: return None
         n=chidren[-1]
-        if type(n) is st: n=TextNode(n)
+        if type(n) in sts: n=TextNode(n)
         return n.__of__(self)
 
     """
     create aliases for all above functions in the pythony way.
     """
 
-    def _get_ChildNodes(self, type=type, st=type('')):
-        return self.getChildNodes(type,st)
+    def _get_ChildNodes(self, type=type, sts=StringTypes):
+        return self.getChildNodes(type,sts)
 
-    def _get_FirstChild(self, type=type, st=type('')):
-        return self.getFirstChild(type,st)
+    def _get_FirstChild(self, type=type, sts=StringTypes):
+        return self.getFirstChild(type,sts)
 
-    def _get_LastChild(self, type=type, st=type('')):
-        return self.getLastChild(type,st)
+    def _get_LastChild(self, type=type, sts=StringTypes):
+        return self.getLastChild(type,sts)
 
 class NodeWrapper(ParentNode):
     """
@@ -167,7 +170,7 @@
 
     def getPreviousSibling(self,
                            type=type,
-                           st=type(''),
+                           sts=StringTypes,
                            getattr=getattr,
                            None=None):
 
@@ -190,13 +193,13 @@
         try: n=children[index]
         except IndexError: return None
         else:
-            if type(n) is st:
+            if type(n) in sts:
                 n=TextNode(n)
             n._DOMIndex=index
             return n.__of__(self)
 
 
-    def getNextSibling(self, type=type, st=type('')):
+    def getNextSibling(self, type=type, sts=StringTypes):
         """
         The node immediately preceding this node.  If
         there is no such node, this returns None.
@@ -216,7 +219,7 @@
         except IndexError:
             return None
         else:
-            if type(n) is st:
+            if type(n) in sts:
                 n=TextNode(n)
             n._DOMIndex=index
             return n.__of__(self)
@@ -239,14 +242,14 @@
 
     def _get_PreviousSibling(self,
                            type=type,
-                           st=type(''),
+                           sts=StringTypes,
                            getattr=getattr,
                            None=None):
 
-        return self.getPreviousSibling(type,st,getattr,None)
+        return self.getPreviousSibling(type,sts,getattr,None)
 
-    def _get_NextSibling(self, type=type, st=type('')):
-        return self.getNextSibling(type,st)
+    def _get_NextSibling(self, type=type, sts=StringTypes):
+        return self.getNextSibling(type,sts)
 
     def _get_OwnerDocument(self):
         return self.getOwnerDocument()
@@ -288,7 +291,7 @@
 
     def getPreviousSibling(self,
                            type=type,
-                           st=type(''),
+                           sts=StringTypes,
                            getattr=getattr,
                            None=None):
         """
@@ -296,7 +299,7 @@
         there is no such node, this returns None.
         """
 
-    def getNextSibling(self, type=type, st=type('')):
+    def getNextSibling(self, type=type, sts=StringTypes):
         """
         The node immediately preceding this node.  If
         there is no such node, this returns None.
@@ -342,13 +345,13 @@
 
     def _get_PreviousSibling(self,
                            type=type,
-                           st=type(''),
+                           sts=StringTypes,
                            getattr=getattr,
                            None=None):
 
-        return self.getPreviousSibling(type,st,getattr,None)
+        return self.getPreviousSibling(type,sts,getattr,None)
 
-    def _get_NextSibling(self, type=type, st=type('')):
+    def _get_NextSibling(self, type=type, sts=StringTypes):
         return self.getNextSibling()
 
     def _get_Attributes(self):
@@ -407,10 +410,10 @@
         """A code representing the type of the node."""
         return ELEMENT_NODE
 
-    def getNodeValue(self, type=type, st=type('')):
+    def getNodeValue(self, type=type, sts=StringTypes):
         r=[]
         for c in self.getChildren():
-            if type(c) is not st:
+            if type(c) not in sts:
                 c=c.getNodeValue()
             r.append(c)
         return ''.join(r)
@@ -480,8 +483,8 @@
     def _get_NodeType(self):
         return self.getNodeType()
 
-    def _get_NodeValue(self, type=type, st=type('')):
-        return self.getNodeValue(type,st)
+    def _get_NodeValue(self, type=type, sts=StringTypes):
+        return self.getNodeValue(type,sts)
 
     def _get_ParentNode(self):
         return self.getParentNode()
@@ -517,7 +520,7 @@
     def __init__(self,list=None):
         self._data = list or []
 
-    def __getitem__(self, index, type=type, st=type('')):
+    def __getitem__(self, index, type=type, sts=StringTypes):
         return self._data[index]
 
     def __getslice__(self, i, j):


=== Zope/lib/python/StructuredText/__init__.py 1.9 => 1.9.8.1 ===
--- Zope/lib/python/StructuredText/__init__.py:1.9	Wed Aug 14 17:58:22 2002
+++ Zope/lib/python/StructuredText/__init__.py	Mon Sep 16 21:10:18 2002
@@ -17,14 +17,14 @@
 from ST import Basic
 import DocBookClass
 import HTMLWithImages
-from types import StringType
+from types import StringType, UnicodeType
 import DocumentWithImages
 
 ClassicHTML=HTML
 HTMLNG=HTMLClass.HTMLClass()
 
 def HTML(src, level=1):
-    if isinstance(src, StringType):
+    if isinstance(src, StringType) or isinstance(src, UnicodeType):
         return ClassicHTML(src, level)
     return HTMLNG(src, level)