Changeset 136 for pyyaml/trunk/lib/yaml/serializer.py
- Timestamp:
- 04/15/06 19:54:52 (7 years ago)
- File:
-
- 1 edited
-
pyyaml/trunk/lib/yaml/serializer.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
pyyaml/trunk/lib/yaml/serializer.py
r135 r136 13 13 ANCHOR_TEMPLATE = u'id%03d' 14 14 15 def __init__(self, emitter, encoding=None, line_break=None, canonical=None, 16 indent=None, width=None, allow_unicode=None): 17 self.emitter = emitter 15 def __init__(self, encoding=None, 16 explicit_start=None, explicit_end=None, version=None, tags=None): 17 self.use_encoding = encoding 18 self.use_explicit_start = explicit_start 19 self.use_explicit_end = explicit_end 20 self.use_version = version 21 self.use_tags = tags 18 22 self.serialized_nodes = {} 19 23 self.anchors = {} 20 24 self.last_anchor_id = 0 21 25 self.closed = None 22 self.open(encoding, line_break, canonical, indent, width, allow_unicode)23 26 24 def open(self, encoding=None, line_break=None, canonical=None, 25 indent=None, width=None, allow_unicode=None): 27 def open(self): 26 28 if self.closed is None: 27 self.emitter.emit(StreamStartEvent(encoding=encoding, 28 line_break=line_break, canonical=canonical, 29 indent=indent, width=width, allow_unicode=allow_unicode)) 29 self.emit(StreamStartEvent(encoding=self.use_encoding)) 30 30 self.closed = False 31 31 elif self.closed: … … 38 38 raise SerializerError("serializer is not opened") 39 39 elif not self.closed: 40 self.emit ter.emit(StreamEndEvent())40 self.emit(StreamEndEvent()) 41 41 self.closed = True 42 42 43 def __del__(self):44 self.close()43 #def __del__(self): 44 # self.close() 45 45 46 def serialize(self, node, explicit_start=None, explicit_end=None, 47 version=None, tags=None): 46 def serialize(self, node): 48 47 if self.closed is None: 49 48 raise SerializerError("serializer is not opened") 50 49 elif self.closed: 51 50 raise SerializerError("serializer is closed") 52 self.emit ter.emit(DocumentStartEvent(explicit=explicit_start,53 version= version, tags=tags))51 self.emit(DocumentStartEvent(explicit=self.use_explicit_start, 52 version=self.use_version, tags=self.use_tags)) 54 53 self.anchor_node(node) 55 54 self.serialize_node(node) 56 self.emit ter.emit(DocumentEndEvent(explicit=explicit_end))55 self.emit(DocumentEndEvent(explicit=self.use_explicit_end)) 57 56 self.serialized_nodes = {} 58 57 self.anchors = {} … … 80 79 alias = self.anchors[node] 81 80 if node in self.serialized_nodes: 82 self.emit ter.emit(AliasEvent(alias))81 self.emit(AliasEvent(alias)) 83 82 else: 84 83 self.serialized_nodes[node] = True 85 84 if isinstance(node, ScalarNode): 86 self.emitter.emit(ScalarEvent(alias, node.tag, node.value, 87 implicit=node.implicit, style=node.style)) 85 detected_tag = self.detect(node.value) 86 implicit = (node.tag == self.detect(node.value) 87 or (node.tag == self.DEFAULT_SCALAR_TAG 88 and detected_tag is None)) 89 self.emit(ScalarEvent(alias, node.tag, implicit, node.value, 90 style=node.style)) 88 91 elif isinstance(node, SequenceNode): 89 self.emitter.emit(SequenceStartEvent(alias, node.tag, 92 # TODO: 93 # 1) Check the current path in the Resolver. 94 # 2) Add the implicit flag to the SequenceStartEvent and 95 # MappingStartEvent. 96 tag = node.tag 97 if tag == self.DEFAULT_SEQUENCE_TAG and not self.canonical: 98 tag = None 99 self.emit(SequenceStartEvent(alias, tag, 90 100 flow_style=node.flow_style)) 91 101 for item in node.value: 92 102 self.serialize_node(item) 93 self.emit ter.emit(SequenceEndEvent())103 self.emit(SequenceEndEvent()) 94 104 elif isinstance(node, MappingNode): 95 self.emitter.emit(MappingStartEvent(alias, node.tag, 105 tag = node.tag 106 if tag == self.DEFAULT_MAPPING_TAG and not self.canonical: 107 tag = None 108 self.emit(MappingStartEvent(alias, tag, 96 109 flow_style=node.flow_style)) 97 for key in node.value: 98 self.serialize_node(key) 99 self.serialize_node(node.value[key]) 100 self.emitter.emit(MappingEndEvent()) 110 if hasattr(node.value, 'keys'): 111 for key in node.value.keys(): 112 self.serialize_node(key) 113 self.serialize_node(node.value[key]) 114 else: 115 for key, value in node.value: 116 self.serialize_node(key) 117 self.serialize_node(value) 118 self.emit(MappingEndEvent()) 101 119
Note: See TracChangeset
for help on using the changeset viewer.
