コード例 #1
0
ファイル: elaborator.py プロジェクト: falldave/yaml_elaborate
    def _accept_mapping(self, anchor, sink_node):
        start_event = self._event_next()
        tag = self._resolve_tag(start_event.tag, MappingNode, None, start_event.implicit)

        start_event.tag = tag
        yield start_event

        node = MappingNode(tag, [], start_event.start_mark, None,
                flow_style=start_event.flow_style)

        self._set_anchor(anchor, node)

        while not self._event_peek_isa(MappingEndEvent):
            sink_key = _Sink()
            sink_value = _Sink()

            if self._settings.with_extra_events:
                mark = self._event_peek().start_mark
                yield PairStartEvent(mark)
                yield PairKeyStartEvent(mark)

            for ee in self._accept_any_value(node, None, sink_key): yield ee

            if self._settings.with_extra_events:
                mark = self._event_peek().start_mark
                yield PairKeyEndEvent(mark)
                yield PairValueStartEvent(mark)

            for ee in self._accept_any_value(node, sink_key.value,
                    sink_value): yield ee

            if self._settings.with_extra_events:
                mark = self._event_peek().start_mark
                yield PairValueEndEvent(mark)
                yield PairEndEvent(mark)

            if self._settings.composing_fully:
                node.value.append((sink_key.value, sink_value.value))

        end_event = self._event_next()
        yield end_event

        node.end_mark = end_event.end_mark

        _put(sink_node, node)