X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e42c7b856732d0f7c3a209a42c269c613d40578a..ddfc587a2ea899f654d940c21f102316a39985bd:/wxPython/samples/stxview/StructuredText/DocBookClass.py diff --git a/wxPython/samples/stxview/StructuredText/DocBookClass.py b/wxPython/samples/stxview/StructuredText/DocBookClass.py index b126878bde..5a14f33d78 100644 --- a/wxPython/samples/stxview/StructuredText/DocBookClass.py +++ b/wxPython/samples/stxview/StructuredText/DocBookClass.py @@ -88,238 +88,245 @@ from string import join, split, find, lstrip class DocBookClass: - element_types={ - '#text': '_text', - 'StructuredTextDocument': 'document', - 'StructuredTextParagraph': 'paragraph', - 'StructuredTextExample': 'example', - 'StructuredTextBullet': 'bullet', - 'StructuredTextNumbered': 'numbered', - 'StructuredTextDescription': 'description', - 'StructuredTextDescriptionTitle': 'descriptionTitle', - 'StructuredTextDescriptionBody': 'descriptionBody', - 'StructuredTextSection': 'section', - 'StructuredTextSectionTitle': 'sectionTitle', - 'StructuredTextLiteral': 'literal', - 'StructuredTextEmphasis': 'emphasis', - 'StructuredTextStrong': 'strong', - 'StructuredTextLink': 'link', - 'StructuredTextXref': 'xref', - } - - def dispatch(self, doc, level, output): - getattr(self, self.element_types[doc.getNodeName()])(doc, level, output) - - def __call__(self, doc, level=1): - r=[] - self.dispatch(doc, level-1, r.append) - return join(r,'') - - def _text(self, doc, level, output): - if doc.getNodeName() == 'StructuredTextLiteral': - output(doc.getNodeValue()) - else: - output(lstrip(doc.getNodeValue())) - - def document(self, doc, level, output): - output('\n') - output('\n') - children=doc.getChildNodes() - if (children and - children[0].getNodeName() == 'StructuredTextSection'): - output('%s' % children[0].getChildNodes()[0].getNodeValue()) - for c in children: + element_types={ + '#text': '_text', + 'StructuredTextDocument': 'document', + 'StructuredTextParagraph': 'paragraph', + 'StructuredTextExample': 'example', + 'StructuredTextBullet': 'bullet', + 'StructuredTextNumbered': 'numbered', + 'StructuredTextDescription': 'description', + 'StructuredTextDescriptionTitle': 'descriptionTitle', + 'StructuredTextDescriptionBody': 'descriptionBody', + 'StructuredTextSection': 'section', + 'StructuredTextSectionTitle': 'sectionTitle', + 'StructuredTextLiteral': 'literal', + 'StructuredTextEmphasis': 'emphasis', + 'StructuredTextStrong': 'strong', + 'StructuredTextLink': 'link', + 'StructuredTextXref': 'xref', + 'StructuredTextSGML': 'sgml', + } + + def dispatch(self, doc, level, output): + getattr(self, self.element_types[doc.getNodeName()])(doc, level, output) + + def __call__(self, doc, level=1): + r=[] + self.dispatch(doc, level-1, r.append) + return join(r,'') + + def _text(self, doc, level, output): + if doc.getNodeName() == 'StructuredTextLiteral': + output(doc.getNodeValue()) + else: + output(lstrip(doc.getNodeValue())) + + def document(self, doc, level, output): + output('\n') + output('\n') + children=doc.getChildNodes() + if (children and + children[0].getNodeName() == 'StructuredTextSection'): + output('%s' % children[0].getChildNodes()[0].getNodeValue()) + for c in children: + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output('\n') + + def section(self, doc, level, output): + output('\n
\n') + children=doc.getChildNodes() + for c in children: + getattr(self, self.element_types[c.getNodeName()])(c, level+1, output) + output('\n
\n') + + def sectionTitle(self, doc, level, output): + output('') + for c in doc.getChildNodes(): + try: getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('</book>\n') - - def section(self, doc, level, output): - output('\n<sect%s>\n' % (level + 1)) - children=doc.getChildNodes() - for c in children: - getattr(self, self.element_types[c.getNodeName()])(c, level+1, output) - output('\n</sect%s>\n' % (level + 1)) - - def sectionTitle(self, doc, level, output): - output('<title>') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('\n') - - def description(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - if n is None or n.getNodeName() is not doc.getNodeName(): - output('\n') - - def descriptionTitle(self, doc, level, output): - output('\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('\n') - - def descriptionBody(self, doc, level, output): - output('\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('\n') - output('\n') + except: + print "failed", c.getNodeName(), c + output('\n') + + def description(self, doc, level, output): + p=doc.getPreviousSibling() + if p is None or p.getNodeName() is not doc.getNodeName(): + output('\n') + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + n=doc.getNextSibling() + if n is None or n.getNodeName() is not doc.getNodeName(): + output('\n') + + def descriptionTitle(self, doc, level, output): + output('\n') + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output('\n') + + def descriptionBody(self, doc, level, output): + output('\n') + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output('\n') + output('\n') + + def bullet(self, doc, level, output): + p=doc.getPreviousSibling() + if p is None or p.getNodeName() is not doc.getNodeName(): + output('\n') + output('\n') + + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + n=doc.getNextSibling() + output('\n') + if n is None or n.getNodeName() is not doc.getNodeName(): + output('\n') + + def numbered(self, doc, level, output): + p=doc.getPreviousSibling() + if p is None or p.getNodeName() is not doc.getNodeName(): + output('\n') + output('\n') + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + n=doc.getNextSibling() + output('\n') + if n is None or n.getNodeName() is not doc.getNodeName(): + output('\n') + + def example(self, doc, level, output): + i=0 + for c in doc.getChildNodes(): + if i==0: + output('\n' in your body will break this... + ## + output(prestrip(c.getNodeValue())) + output('\n]]>\n') + else: + getattr(self, self.element_types[c.getNodeName()])( + c, level, output) + + def paragraph(self, doc, level, output): + output('\n\n') + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])( + c, level, output) + output('\n\n') + + def link(self, doc, level, output): + output('' % doc.href) + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output('') - def bullet(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('\n') - output('\n') + def emphasis(self, doc, level, output): + output('') + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output(' ') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - output('\n') - if n is None or n.getNodeName() is not doc.getNodeName(): - output('\n') - - def numbered(self, doc, level, output): - p=doc.getPreviousSibling() - if p is None or p.getNodeName() is not doc.getNodeName(): - output('\n') - output('\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - n=doc.getNextSibling() - output('\n') - if n is None or n.getNodeName() is not doc.getNodeName(): - output('\n') - - def example(self, doc, level, output): - i=0 - for c in doc.getChildNodes(): - if i==0: - output('\n' in your body will break this... - ## - output(prestrip(c.getNodeValue())) - output('\n]]>\n') - else: - getattr(self, self.element_types[c.getNodeName()])( - c, level, output) - - def paragraph(self, doc, level, output): - - output('\n\n') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])( - c, level, output) - output('\n\n') - - def link(self, doc, level, output): -# output('' % doc.href) - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) -# output('') + def literal(self, doc, level, output): + output('') + for c in doc.getChildNodes(): + output(c.getNodeValue()) + output('') - def emphasis(self, doc, level, output): - output('') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output(' ') + def strong(self, doc, level, output): + output('') + for c in doc.getChildNodes(): + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output('') - def literal(self, doc, level, output): - output('') - for c in doc.getChildNodes(): - output(c.getNodeValue()) - output('') + def xref(self, doc, level, output): + output('' % doc.getNodeValue()) - def strong(self, doc, level, output): - output('') - for c in doc.getChildNodes(): - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('') + def sgml(self, doc, level, output): + output(doc.getNodeValue()) - def xref(self, doc, level, output): - output('' % doc.getNodeValue()) def prestrip(v): - v=string.replace(v, '\r\n', '\n') - v=string.replace(v, '\r', '\n') - v=string.replace(v, '\t', ' ') - lines=string.split(v, '\n') - indent=len(lines[0]) - for line in lines: - if not len(line): continue - i=len(line)-len(string.lstrip(line)) - if i < indent: - indent=i - nlines=[] - for line in lines: - nlines.append(line[indent:]) - return string.join(nlines, '\r\n') + v=string.replace(v, '\r\n', '\n') + v=string.replace(v, '\r', '\n') + v=string.replace(v, '\t', ' ') + lines=string.split(v, '\n') + indent=len(lines[0]) + for line in lines: + if not len(line): continue + i=len(line)-len(string.lstrip(line)) + if i < indent: + indent=i + nlines=[] + for line in lines: + nlines.append(line[indent:]) + return string.join(nlines, '\n') class DocBookChapter(DocBookClass): - def document(self, doc, level, output): - output('\n') - children=doc.getChildNodes() - if (children and - children[0].getNodeName() == 'StructuredTextSection'): - output('%s' % children[0].getChildNodes()[0].getNodeValue()) - for c in children[0].getChildNodes()[1:]: - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('\n') + def document(self, doc, level, output): + output('\n') + children=doc.getChildNodes() + if (children and + children[0].getNodeName() == 'StructuredTextSection'): + output('%s' % children[0].getChildNodes()[0].getNodeValue()) + for c in children[0].getChildNodes()[1:]: + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output('\n') ets = DocBookClass.element_types -ets.update({'StructuredTextImage': 'image'}) +ets.update({'StructuredTextImage': 'image'}) class DocBookChapterWithFigures(DocBookChapter): - element_types = ets + element_types = ets - def image(self, doc, level, output): - if hasattr(doc, 'key'): - output('
%s\n' % (doc.key, doc.getNodeValue()) ) - else: - output('
%s\n' % doc.getNodeValue()) -## for c in doc.getChildNodes(): -## getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('\n
\n' % doc.href) + def image(self, doc, level, output): + if hasattr(doc, 'key'): + output('
%s\n' % (doc.key, doc.getNodeValue()) ) + else: + output('
%s\n' % doc.getNodeValue()) +## for c in doc.getChildNodes(): +## getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output('\n
\n' % doc.href) class DocBookArticle(DocBookClass): - def document(self, doc, level, output): - output('\n') - output('
\n') - children=doc.getChildNodes() - if (children and - children[0].getNodeName() == 'StructuredTextSection'): - output('\n%s\n\n' % - children[0].getChildNodes()[0].getNodeValue()) - for c in children: - getattr(self, self.element_types[c.getNodeName()])(c, level, output) - output('
\n') + def document(self, doc, level, output): + output('\n') + output('
\n') + children=doc.getChildNodes() + if (children and + children[0].getNodeName() == 'StructuredTextSection'): + output('\n%s\n\n' % + children[0].getChildNodes()[0].getNodeValue()) + for c in children: + getattr(self, self.element_types[c.getNodeName()])(c, level, output) + output('
\n') class DocBookBook: - def __init__(self, title=''): - self.title = title - self.chapters = [] + def __init__(self, title=''): + self.title = title + self.chapters = [] - def addChapter(self, chapter): - self.chapters.append(chapter) + def addChapter(self, chapter): + self.chapters.append(chapter) - def read(self): - out = '\n\n' - out = out + '%s\n' % self.title - for chapter in self.chapters: - out = out + chapter + '\n\n' + def read(self): + out = '\n\n' + out = out + '%s\n' % self.title + for chapter in self.chapters: + out = out + chapter + '\n\n' - return out + return out - def __str__(self): - return self.read() - + def __str__(self): + return self.read() +