summaryrefslogtreecommitdiff
path: root/ext/_yaml.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'ext/_yaml.pyx')
-rw-r--r--ext/_yaml.pyx18
1 files changed, 18 insertions, 0 deletions
diff --git a/ext/_yaml.pyx b/ext/_yaml.pyx
index ac8f803..76b307a 100644
--- a/ext/_yaml.pyx
+++ b/ext/_yaml.pyx
@@ -663,6 +663,24 @@ cdef class CParser:
if self.parsed_event.type != YAML_STREAM_END_EVENT:
return self._compose_document()
+ def get_single_node(self):
+ self._parse_next_event()
+ yaml_event_delete(&self.parsed_event)
+ self._parse_next_event()
+ document = None
+ if self.parsed_event.type != YAML_STREAM_END_EVENT:
+ document = self._compose_document()
+ self._parse_next_event()
+ if self.parsed_event.type != YAML_STREAM_END_EVENT:
+ mark = Mark(self.stream_name,
+ self.parsed_event.start_mark.index,
+ self.parsed_event.start_mark.line,
+ self.parsed_event.start_mark.column,
+ None, None)
+ raise ComposerError("expected a single document in the stream",
+ document.start_mark, "but found another document", mark)
+ return document
+
cdef object _compose_document(self):
yaml_event_delete(&self.parsed_event)
node = self._compose_node(None, None)