diff options
author | xi <xi@18f92427-320e-0410-9341-c67f048884a3> | 2007-08-21 20:25:34 +0000 |
---|---|---|
committer | xi <xi@18f92427-320e-0410-9341-c67f048884a3> | 2007-08-21 20:25:34 +0000 |
commit | 1fa53636429d4be3f24a933c47592ed48dd6bc08 (patch) | |
tree | 40219732594b801f2f2314525bb3c780f903049d /ext | |
parent | d9f18f734cff972dcacc26dd1eae96110874aea2 (diff) | |
download | pyyaml-1fa53636429d4be3f24a933c47592ed48dd6bc08.tar.gz |
Make compose() and load() ensure that the input stream contains a single document. Fixes #54.
git-svn-id: http://svn.pyyaml.org/pyyaml/trunk@258 18f92427-320e-0410-9341-c67f048884a3
Diffstat (limited to 'ext')
-rw-r--r-- | ext/_yaml.pyx | 18 |
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) |