E4XML/XMLWriterBase.py

Sun, 10 Jan 2010 19:19:52 +0000

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 10 Jan 2010 19:19:52 +0000
changeset 45
9a18f4dbb493
parent 44
fe5cd20cb0eb
permissions
-rw-r--r--

Did a lot of encoding related stuff.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
13
1af94a91f439 Changed copyright for 2010.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
3 # Copyright (c) 2004 - 2010 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
15
f6ccc31d6e72 Started to rename stuff for eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
7 Module implementing a base class for all of eric5s XML writers.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
11 import pickle
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
12 import base64
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 class XMLWriterBase(object):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 """
15
f6ccc31d6e72 Started to rename stuff for eric5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
16 Class implementing a base class for all of eric5s XML writers.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 def __init__(self, file):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 @param file open file (like) object for writing
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 self.pf = file
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 self.basics = {
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
27 type(None) : self._write_none,
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
28 int : self._write_int,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
29 float : self._write_float,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
30 complex : self._write_complex,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
31 bool : self._write_bool,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
32 str : self._write_string,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
33 bytes : self._write_bytes,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
34 bytearray : self._write_bytearray,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
35 tuple : self._write_tuple,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
36 list : self._write_list,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
37 dict : self._write_dictionary,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
38 set : self._write_set,
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
39 frozenset : self._write_frozenset,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 }
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
42 self.NEWPARA = chr(0x2029)
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 self.NEWLINE = chr(0x2028)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 def _write(self, s, newline = True):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Protected method used to do the real write operation.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @param s string to be written to the XML file
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @param newline flag indicating a linebreak
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
52 self.pf.write("%s%s" % (s,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 newline and os.linesep or ""))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 def writeXML(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 Public method to write the XML to the file.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 # write the XML header
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self._write('<?xml version="1.0" encoding="UTF-8"?>')
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 def escape(self, data, attribute=False):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 Function to escape &, <, and > in a string of data.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @param data data to be escaped (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @param attribute flag indicating escaping is done for an attribute
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @return the escaped data (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 # must do ampersand first
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 data = data.replace("&", "&amp;")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 data = data.replace(">", "&gt;")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 data = data.replace("<", "&lt;")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 if attribute:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 data = data.replace('"', "&quot;")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 return data
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 def encodedNewLines(self, text):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 Public method to encode newlines and paragraph breaks.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @param text text to encode (string or QString)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 return text.replace("\n\n", self.NEWPARA).replace("\n", self.NEWLINE)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 def _writeBasics(self, pyobject, indent = 0):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 Protected method to dump an object of a basic Python type.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 @param pyobject object to be dumped
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 writeMethod = self.basics.get(type(pyobject)) or self._write_unimplemented
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 writeMethod(pyobject, indent)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 ############################################################################
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 ## The various writer methods for basic types
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 ############################################################################
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 def _write_none(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 Protected method to dump a NoneType object.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 @param value value to be dumped (None) (ignored)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self._write('%s<none />' % (" " * indent))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 def _write_int(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 """
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
112 Protected method to dump an int object.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 @param value value to be dumped (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 self._write('%s<int>%s</int>' % (" " * indent, value))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 def _write_bool(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 """
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
121 Protected method to dump a bool object.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @param value value to be dumped (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self._write('%s<bool>%s</bool>' % (" " * indent, value))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 def _write_float(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
130 Protected method to dump a float object.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @param value value to be dumped (float)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self._write('%s<float>%s</float>' % (" " * indent, value))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 def _write_complex(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
139 Protected method to dump a complex object.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 @param value value to be dumped (complex)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 self._write('%s<complex>%s %s</complex>' % \
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 (" " * indent, value.real, value.imag))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 def _write_string(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
149 Protected method to dump a str object.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 @param value value to be dumped (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 self._write('%s<string>%s</string>' % (" " * indent, self.escape(value)))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
156 def _write_bytes(self, value, indent):
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
157 """
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
158 Protected method to dump a bytes object.
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
159
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
160 @param value value to be dumped (bytes)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
161 @param indent indentation level for prettier output (integer)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
162 """
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
163 self._write('%s<bytes>%s</bytes>' % (
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
164 " " * indent, ",".join(["%d" % b for b in value])))
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
165
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
166 def _write_bytearray(self, value, indent):
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
167 """
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
168 Protected method to dump a bytearray object.
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
169
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
170 @param value value to be dumped (bytearray)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
171 @param indent indentation level for prettier output (integer)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
172 """
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
173 self._write('%s<bytearray>%s</bytearray>' % (
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
174 " " * indent, ",".join(["%d" % b for b in value])))
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
175
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 def _write_tuple(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 """
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
178 Protected method to dump a tuple object.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @param value value to be dumped (tuple)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self._write('%s<tuple>' % (" " * indent))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 nindent = indent + 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 for elem in value:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 self._writeBasics(elem, nindent)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 self._write('%s</tuple>' % (" " * indent))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 def _write_list(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 """
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
191 Protected method to dump a list object.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 @param value value to be dumped (list)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self._write('%s<list>' % (" " * indent))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 nindent = indent + 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 for elem in value:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 self._writeBasics(elem, nindent)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 self._write('%s</list>' % (" " * indent))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 def _write_dictionary(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
204 Protected method to dump a dict object.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 @param value value to be dumped (dictionary)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 self._write('%s<dict>' % (" " * indent))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 nindent1 = indent + 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 nindent2 = indent + 2
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
212 keys = sorted(list(value.keys()))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 for key in keys:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 self._write('%s<key>' % (" " * nindent1))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self._writeBasics(key, nindent2)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self._write('%s</key>' % (" " * nindent1))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 self._write('%s<value>' % (" " * nindent1))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 self._writeBasics(value[key], nindent2)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self._write('%s</value>' % (" " * nindent1))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 self._write('%s</dict>' % (" " * indent))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
44
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
222 def _write_set(self, value, indent):
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
223 """
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
224 Protected method to dump a set object.
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
225
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
226 @param value value to be dumped (set)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
227 @param indent indentation level for prettier output (integer)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
228 """
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
229 self._write('%s<set>' % (" " * indent))
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
230 nindent = indent + 1
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
231 for elem in value:
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
232 self._writeBasics(elem, nindent)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
233 self._write('%s</set>' % (" " * indent))
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
234
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
235 def _write_frozenset(self, value, indent):
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
236 """
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
237 Protected method to dump a frozenset object.
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
238
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
239 @param value value to be dumped (frozenset)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
240 @param indent indentation level for prettier output (integer)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
241 """
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
242 self._write('%s<frozenset>' % (" " * indent))
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
243 nindent = indent + 1
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
244 for elem in value:
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
245 self._writeBasics(elem, nindent)
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
246 self._write('%s</frozenset>' % (" " * indent))
fe5cd20cb0eb Added new Python3 types to XMLWriterBase and XMLHandlerBase.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 42
diff changeset
247
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 def _write_unimplemented(self, value, indent):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 Protected method to dump a type, that has no special method.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 @param value value to be dumped (any pickleable object)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 @param indent indentation level for prettier output (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 self._write('%s<pickle method="pickle" encoding="base64">%s</pickle>' % \
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
256 (" " * indent, str(base64.b64encode(pickle.dumps(value)), "ASCII")))

eric ide

mercurial