Thu, 09 Sep 2010 08:46:07 +0200
Started implementing the XMLStreamReaderBase class.
E5XML/XMLStreamReaderBase.py | file | annotate | diff | comparison | revisions | |
eric5.e4p | file | annotate | diff | comparison | revisions |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5XML/XMLStreamReaderBase.py Thu Sep 09 08:46:07 2010 +0200 @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a base class for all of eric5s XML stream writers. +""" + +import pickle +import base64 + +from PyQt4.QtCore import QXmlStreamReader, QCoreApplication + +class XMLStreamReaderBase(QXmlStreamReader): + """ + Class implementing a base class for all of eric5s XML stream readers. + """ + def __init__(self, device): + """ + Constructor + + @param device reference to the I/O device to read from (QIODevice) + """ + QXmlStreamReader.__init__(self, device) + + self.NEWPARA = chr(0x2029) + self.NEWLINE = chr(0x2028) + + def decodedNewLines(self, text): + """ + Public method to decode newlines and paragraph breaks. + + @param text text to decode (string) + """ + return text.replace(self.NEWPARA, "\n\n").replace(self.NEWLINE, "\n") + + def _skipUnknownElement(self): + """ + Protected method to skip over all unknown elements. + """ + if not self.isStartElement(): + return + + while not self.atEnd(): + self.readNext() + if self.isEndElement(): + break + + if self.isStartElement(): + self._skipUnknownElement() + + def _readBasics(self): + """ + Protected method to read am object of a basic Python type. + + @return Python object read + """ + while not self.atEnd(): + self.readNext() + if self.isStartElement(): + try: + if self.name() == "none": + return None + elif self.name() == "int": + return int(self.readElementText()) + elif self.name() == "bool": + b = self.readElementText() + if b == "True": + return True + else: + return False + elif self.name() == "float": + return float(self.readElementText()) + elif self.name() == "complex": + real, imag = self.readElementText().split() + return float(real) + float(imag)*1j + elif self.name() == "string": + return self.readElementText() + elif self.name() == "bytes": + by = bytes( + [int(b) for b in self.readElementText().split(",")]) + return by + elif self.name() == "bytearray": + by = bytearray( + [int(b) for b in self.readElementText().split(",")]) + return by + else: + self._skipUnknownElement() + except ValueError as err: + self.raiseError(str(err))
--- a/eric5.e4p Mon Sep 06 19:47:46 2010 +0200 +++ b/eric5.e4p Thu Sep 09 08:46:07 2010 +0200 @@ -820,6 +820,7 @@ <Source>Plugins/WizardPlugins/E5MessageBoxWizard/E5MessageBoxWizardDialog.py</Source> <Source>Plugins/PluginWizardE5MessageBox.py</Source> <Source>E5XML/XMLStreamWriterBase.py</Source> + <Source>E5XML/XMLStreamReaderBase.py</Source> </Sources> <Forms> <Form>PyUnit/UnittestDialog.ui</Form>