[Python-checkins] CVS: python/dist/src/Lib/xml/dom minidom.py,1.29,1.30

Fred L. Drake fdrake@users.sourceforge.net
Wed, 04 Apr 2001 07:09:49 -0700


Update of /cvsroot/python/python/dist/src/Lib/xml/dom
In directory usw-pr-cvs1:/tmp/cvs-serv8483/xml/dom

Modified Files:
	minidom.py 
Log Message:

Add support for the CharacterData methods, CDATASection.


Index: minidom.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/xml/dom/minidom.py,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -r1.29 -r1.30
*** minidom.py	2001/03/31 16:30:40	1.29
--- minidom.py	2001/04/04 14:09:46	1.30
***************
*** 614,623 ****
          writer.write("%s<?%s %s?>%s" % (indent,self.target, self.data, newl))
  
! class Text(Node):
!     nodeType = Node.TEXT_NODE
!     nodeName = "#text"
!     attributes = None
!     childNodeTypes = ()
! 
      def __init__(self, data):
          if type(data) not in _StringTypes:
--- 614,618 ----
          writer.write("%s<?%s %s?>%s" % (indent,self.target, self.data, newl))
  
! class CharacterData(Node):
      def __init__(self, data):
          if type(data) not in _StringTypes:
***************
*** 626,629 ****
--- 621,628 ----
          self.data = self.nodeValue = data
  
+     def __getattr__(self, name):
+         if name == "length":
+             return len(self.data)
+ 
      def __repr__(self):
          if len(self.data) > 10:
***************
*** 631,635 ****
          else:
              dotdotdot = ""
!         return "<DOM Text node \"%s%s\">" % (self.data[0:10], dotdotdot)
  
      def splitText(self, offset):
--- 630,687 ----
          else:
              dotdotdot = ""
!         return "<DOM %s node \"%s%s\">" % (
!             self.__class__.__name__, self.data[0:10], dotdotdot)
! 
!     def substringData(self, offset, count):
!         if offset < 0:
!             raise xml.dom.IndexSizeErr("offset cannot be negative")
!         if offset >= len(self.data):
!             raise xml.dom.IndexSizeErr("offset cannot be beyond end of data")
!         if count < 0:
!             raise xml.dom.IndexSizeErr("count cannot be negative")
!         return self.data[offset:offset+count]
! 
!     def appendData(self, arg):
!         self.data = self.data + arg
!         self.nodeValue = self.data
! 
!     def insertData(self, offset, arg):
!         if offset < 0:
!             raise xml.dom.IndexSizeErr("offset cannot be negative")
!         if offset >= len(self.data):
!             raise xml.dom.IndexSizeErr("offset cannot be beyond end of data")
!         if arg:
!             self.data = "%s%s%s" % (
!                 self.data[:offset], arg, self.data[offset:])
!             self.nodeValue = self.data
! 
!     def deleteData(self, offset, count):
!         if offset < 0:
!             raise xml.dom.IndexSizeErr("offset cannot be negative")
!         if offset >= len(self.data):
!             raise xml.dom.IndexSizeErr("offset cannot be beyond end of data")
!         if count < 0:
!             raise xml.dom.IndexSizeErr("count cannot be negative")
!         if count:
!             self.data = self.data[:offset] + self.data[offset+count:]
!             self.nodeValue = self.data
! 
!     def replaceData(self, offset, count, arg):
!         if offset < 0:
!             raise xml.dom.IndexSizeErr("offset cannot be negative")
!         if offset >= len(self.data):
!             raise xml.dom.IndexSizeErr("offset cannot be beyond end of data")
!         if count < 0:
!             raise xml.dom.IndexSizeErr("count cannot be negative")
!         if count:
!             self.data = "%s%s%s" % (
!                 self.data[:offset], arg, self.data[offset+count:])
!             self.nodeValue = self.data
! 
! class Text(CharacterData):
!     nodeType = Node.TEXT_NODE
!     nodeName = "#text"
!     attributes = None
!     childNodeTypes = ()
  
      def splitText(self, offset):
***************
*** 649,652 ****
--- 701,713 ----
          _write_data(writer, "%s%s%s"%(indent, self.data, newl))
  
+ 
+ class CDATASection(Text):
+     nodeType = Node.CDATA_SECTION_NODE
+     nodeName = "#cdata-section"
+ 
+     def writexml(self, writer, indent="", addindent="", newl=""):
+         _write_data(writer, "<![CDATA[%s]]>" % self.data)
+ 
+ 
  def _nssplit(qualifiedName):
      fields = _string.split(qualifiedName, ':', 1)
***************
*** 781,784 ****
--- 842,850 ----
          t.ownerDocument = self
          return t
+ 
+     def createCDATASection(self, data):
+         c = CDATASection(data)
+         c.ownerDocument = self
+         return c
  
      def createComment(self, data):