25 begin_string =
"<atlas>\n"
27 end_string =
"\n</atlas>\n"
28 empty_end_string =
"<atlas/>\n"
30 def encode1stream(self, object):
31 return gen_xml(object,
"\t")
33 def encode1(self, object):
34 return gen_xml(object)
38 def get_encoder(stream_flag=None):
42 def gen_xml(obj, indent=""):
44 return gen.encode(obj)
47 def __init__(self, base_indent=""):
49 def encode(self, obj):
51 if hasattr(obj,
"keys"):
52 return "%s<map>\n%s\n%s</map>" % (i, self.
obj2xml(obj, indent=
"\t"+i), i)
54 return "%s<list>\n%s\n%s</list>" % (i, self.
list2xml(obj, indent=
"\t"+i), i)
57 def to_string(self, value):
58 if isinstance(value, str):
59 value = value.replace(
"&",
"&")
60 value = value.replace(
"<",
"<")
61 value = value.replace(
">",
">")
63 elif isinstance(value, int):
65 if value[-1]==
"L": value = value[:-1]
69 def encode_attribute(self, indent, name, str_type, str_value):
70 return '%s<%s name="%s">%s</%s>' % \
71 (indent, str_type, name, str_value, str_type)
74 """this encodes mappings"""
76 add_line = str_list.append
77 for name, value
in list(obj.items()):
81 if isinstance(value, str):
86 str_type = get_atlas_type(value)
89 str_value = self.
obj2xml(value, indent+
"\t")
92 elif str_type==
"list":
93 str_value = self.
list2xml(value, indent+
"\t")
94 if str_value.find(
"\t")>=0:
100 str_value =
"\n%s\n%s" % (str_value, indent)
102 return "\n".join(str_list)
104 def list2xml(self, lst, indent):
106 add_item = str_list.append
109 str_type = get_atlas_type(item)
112 add_item(
"<map>\n%s\n%s</map>" % \
113 (self.
obj2xml(item, indent+
"\t"), indent))
114 elif str_type==
"list":
116 add_item(
"<list>%s</list>" % \
120 add_item(
"<%s>%s</%s>" % (str_type, self.
to_string(item), str_type))
122 str_list = list(map(
lambda s,i=indent:i+s, str_list))
123 return "\n".join(str_list)
125 return "".join(str_list)