def prepareNode(self, dstree, dsnode, level, indent = None): curLevel = util.levelToInt(DocumentStructure.getLevel(dsnode)) levelAbove = util.levelToInt(util.levelAbove(level)) levelDesired = util.levelToInt(level) if curLevel >= levelAbove: while curLevel > levelAbove: newLevel = util.levelBelow(DocumentStructure.getLevel(dsnode)) dsnode = dstree.addNode(dsnode, level = newLevel, indent = indent) curLevel = util.levelToInt(DocumentStructure.getLevel(dsnode)) if level == DocumentStructure.PARAGRAPH: self.preInsertedParagraph = True dsnode = dstree.addNode(dsnode, level = DocumentStructure.PARAGRAPH, indent = indent) else: self.preInsertedParagraph = False elif curLevel < levelAbove: while curLevel < levelDesired: dsnode = dsnode.getparent() curLevel = util.levelToInt(DocumentStructure.getLevel(dsnode)) if level != DocumentStructure.PARAGRAPH: dsnode = dsnode.getparent() DocumentStructure.setIndent(dsnode, indent) return dsnode
def __handle_title__(self, xmlnode, dstree, dsnode): # Assumes document node if DocumentStructure.getLevel(dsnode) != DocumentStructure.DOCUMENT: raise Exception, "Unexpected level" DocumentStructure.setNode(dsnode, value=util.parseValueFrom(xmlnode)) return dsnode
def __handle_caption__(self, xmlnode, dstree, dsnode): dsnode = self.prepareNode(dstree, dsnode, DocumentStructure.PARAGRAPH) value = util.parseValueFrom(xmlnode) if DocumentStructure.getLevel(dsnode) == DocumentStructure.PARAGRAPH: value = util.ensureEndsInPeriod(value) self.abstractHandler.handleReplace(dstree, dsnode, value) return self.handleIndent(dsnode, xmlnode)
def __handle_table__(self, xmlnode, dstree, dsnode): if 'summary' in xmlnode.attrib: value = xmlnode.attrib['summary'] dsnode = self.prepareNode(dstree, dsnode, DocumentStructure.PARAGRAPH) if DocumentStructure.getLevel(dsnode) == DocumentStructure.PARAGRAPH: value = util.ensureEndsInPeriod(value) util.appendToValue(dsnode, ' ' + value + ' ') return self.handleIndent(dsnode, xmlnode)
def __handle_img__(self, xmlnode, dstree, dsnode): value = '' if 'alt' in xmlnode.attrib: value = xmlnode.attrib['alt'] elif 'title' in xmlnode.attrib: value = xmlnode.attrib['title'] dsnode = self.prepareNode(dstree, dsnode, DocumentStructure.PARAGRAPH) if DocumentStructure.getLevel(dsnode) == DocumentStructure.PARAGRAPH: value = util.ensureEndsInPeriod(value) util.appendToValue(dsnode, ' ' + value + ' ') return self.handleIndent(dsnode, xmlnode)
def getLevel(dsnode): return DocumentStructure.getLevel(dsnode)