home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2006 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  3.9 KB  |  102 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from html5lib.treebuilders import _base, etree as etree_builders
  5. from lxml import html, etree
  6.  
  7. class DocumentType(object):
  8.     
  9.     def __init__(self, name, publicId, systemId):
  10.         self.name = name
  11.         self.publicId = publicId
  12.         self.systemId = systemId
  13.  
  14.  
  15.  
  16. class Document(object):
  17.     
  18.     def __init__(self):
  19.         self._elementTree = None
  20.         self.childNodes = []
  21.  
  22.     
  23.     def appendChild(self, element):
  24.         self._elementTree.getroot().addnext(element._element)
  25.  
  26.  
  27.  
  28. class TreeBuilder(_base.TreeBuilder):
  29.     documentClass = Document
  30.     doctypeClass = DocumentType
  31.     elementClass = None
  32.     commentClass = None
  33.     fragmentClass = Document
  34.     
  35.     def __init__(self):
  36.         html_builder = etree_builders.getETreeModule(html, fullTree = False)
  37.         etree_builder = etree_builders.getETreeModule(etree, fullTree = False)
  38.         self.elementClass = html_builder.Element
  39.         self.commentClass = etree_builder.Comment
  40.         _base.TreeBuilder.__init__(self)
  41.  
  42.     
  43.     def reset(self):
  44.         _base.TreeBuilder.reset(self)
  45.         self.rootInserted = False
  46.         self.initialComments = []
  47.         self.doctype = None
  48.  
  49.     
  50.     def getDocument(self):
  51.         return self.document._elementTree
  52.  
  53.     
  54.     def getFragment(self):
  55.         fragment = []
  56.         element = self.openElements[0]._element
  57.         if element.text:
  58.             fragment.append(element.text)
  59.         
  60.         fragment.extend(element.getchildren())
  61.         if element.tail:
  62.             fragment.append(element.tail)
  63.         
  64.         return fragment
  65.  
  66.     
  67.     def insertDoctype(self, name, publicId, systemId):
  68.         doctype = self.doctypeClass(name, publicId, systemId)
  69.         self.doctype = doctype
  70.  
  71.     
  72.     def insertComment(self, data, parent = None):
  73.         if not self.rootInserted:
  74.             self.initialComments.append(data)
  75.         else:
  76.             _base.TreeBuilder.insertComment(self, data, parent)
  77.  
  78.     
  79.     def insertRoot(self, name):
  80.         buf = []
  81.         if self.doctype and self.doctype.name:
  82.             buf.append('<!DOCTYPE %s' % self.doctype.name)
  83.             if self.doctype.publicId is not None or self.doctype.systemId is not None:
  84.                 buf.append(' PUBLIC "%s" "%s"' % (self.doctype.publicId, self.doctype.systemId))
  85.             
  86.             buf.append('>')
  87.         
  88.         buf.append('<html></html>')
  89.         root = html.fromstring(u''.join(buf))
  90.         for comment in self.initialComments:
  91.             root.addprevious(etree.Comment(comment))
  92.         
  93.         self.document = self.documentClass()
  94.         self.document._elementTree = root.getroottree()
  95.         root_element = self.elementClass(name)
  96.         root_element._element = root
  97.         self.document.childNodes.append(root_element)
  98.         self.openElements.append(root_element)
  99.         self.rootInserted = True
  100.  
  101.  
  102.