7 __all__ = [
'Composer',
'ComposerError']
9 from error
import MarkedYAMLError
23 if self.check_event(StreamStartEvent):
27 return not self.check_event(StreamEndEvent)
31 if not self.check_event(StreamEndEvent):
48 if self.check_event(AliasEvent):
49 event = self.get_event()
53 % anchor.encode(
'utf-8'), event.start_mark)
55 event = self.peek_event()
57 if anchor
is not None:
59 raise ComposerError(
"found duplicate anchor %r; first occurence"
60 % anchor.encode(
'utf-8'), self.
anchors[anchor].start_mark,
61 "second occurence", event.start_mark)
62 self.descend_resolver(parent, index)
63 if self.check_event(ScalarEvent):
65 elif self.check_event(SequenceStartEvent):
67 elif self.check_event(MappingStartEvent):
69 self.ascend_resolver()
73 event = self.get_event()
75 if tag
is None or tag ==
u'!':
76 tag = self.resolve(ScalarNode, event.value, event.implicit)
78 event.start_mark, event.end_mark, style=event.style)
79 if anchor
is not None:
84 start_event = self.get_event()
86 if tag
is None or tag ==
u'!':
87 tag = self.resolve(SequenceNode,
None, start_event.implicit)
89 start_event.start_mark,
None,
90 flow_style=start_event.flow_style)
91 if anchor
is not None:
94 while not self.check_event(SequenceEndEvent):
97 end_event = self.get_event()
98 node.end_mark = end_event.end_mark
102 start_event = self.get_event()
103 tag = start_event.tag
104 if tag
is None or tag ==
u'!':
105 tag = self.resolve(MappingNode,
None, start_event.implicit)
107 start_event.start_mark,
None,
108 flow_style=start_event.flow_style)
109 if anchor
is not None:
111 while not self.check_event(MappingEndEvent):
119 node.value.append((item_key, item_value))
120 end_event = self.get_event()
121 node.end_mark = end_event.end_mark
def compose_sequence_node