def owriteBreakingReturn(self, obj): return text.LineBreak()
def html2odf(e, ct=None, **ctargs): """ Convert a :mod:`etgen.html` element to an ODF text element. Most formats are not implemented. There's probably a better way to do this... :ct: the root element ("container"). If not specified, we create one. """ sections_counter = 1 #~ print "20120613 html2odf()", e.tag, e.text if ct is None: ct = text.P(**ctargs) #~ if e.tag in PTAGS: #~ oe = text.P(**ctargs) #~ else: #~ oe = text.P(**ctargs) #~ logger.info("20130201 %s", tostring(e)) #~ raise NotImplementedError("<%s> without container" % e.tag) if isinstance(e, six.string_types): ct.addText(e) #~ oe = text.Span() #~ oe.addText(e) #~ yield oe return ct if e.tag == 'ul': ct = text.List(stylename='podBulletedList') ctargs = dict(stylename='podBulletItem') #~ ctargs = dict() text_container = None if e.tag in ('b', 'strong'): #~ oe = text.Span(stylename='Bold Text') oe = text.Span(stylename='Strong Emphasis') elif e.tag == 'a': oe = text.Span(stylename='Strong Emphasis') #~ oe = text.Span(stylename='Bold Text') elif e.tag in ('i', 'em'): oe = text.Span(stylename='Emphasis') elif e.tag == 'span': oe = text.Span() elif e.tag == 'br': oe = text.LineBreak() elif e.tag == 'h1': """ <text:h text:style-name="Heading_20_1" text:outline-level="1"> """ oe = ct = text.H(stylename="Heading 1", outlinelevel=1) elif e.tag == 'h2': oe = ct = text.H(stylename="Heading 2", outlinelevel=2) elif e.tag == 'h3': oe = ct = text.H(stylename="Heading 3", outlinelevel=3) elif e.tag == 'div': oe = ct = text.Section(name="S" + str(sections_counter)) elif e.tag == 'img': return # ignore images elif e.tag == 'ul': oe = ct #~ elif e.tag in ('ul','ol'): #~ oe = text.List(stylename=e.tag.upper()) #~ ctargs = dict(stylename=e.tag.upper()+"_P") elif e.tag == 'li': #~ oe = ct oe = text.ListItem() text_container = text.P(**ctargs) oe.appendChild(text_container) elif e.tag in PTAGS: oe = ct #~ if ct.tagName == 'p': #~ oe = ct #~ else: #~ oe = text.P(**ctargs) else: logger.info("20130201 %s", tostring(e)) raise NotImplementedError("<%s> inside <%s>" % (e.tag, ct.tagName)) #~ oe = text.Span() if text_container is None: text_container = oe if e.text: text_container.addText(e.text) for child in e: #~ html2odf(child,oe) html2odf(child, text_container, **ctargs) #~ for oc in html2odf(child,oe): # ~ # oe.addElement(oc) #~ oe.appendChild(oc) #~ if not True: #~ if e.tail: #~ oe.addText(e.tail) if oe is not ct: ct.appendChild(oe) #~ yield oe #~ if True: if e.tail: #~ yield e.tail #~ yield text.Span(text=e.tail) #~ yield Text(e.tail) ct.addText(e.tail) return ct
def output_br(self, tag, attrs): self.curr.addElement(text.LineBreak())