From 90d7b190deb5ee7036791ff281440ecc92754b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tina=20M=C3=BCller?= Date: Mon, 30 Mar 2020 18:38:42 +0200 Subject: [PATCH] Support %YAML 1.2 This will allow `%YAML 1.2` directives. See also #20 No changes are needed regarding tag directives. In YAML 1.2 tag directives are for the following document only. This is already implemented like that in libyaml. We would rather have to fix the code if we want to have the correct behaviour (global directives) in YAML 1.1. This would be a bit more complicated, as we would have to save the default version and the current version in the parser object. New passing parser tests: * 27NA: Spec Example 5.9. Directive Indicator * 6ZKB: Spec Example 9.6. Stream * 9DXL: Spec Example 9.6. Stream [1.3] * RTP8: Spec Example 9.2. Document Markers New failing error parser tests (before they were errors for the wrong reason): * EB22: Missing document-end marker before directive * RHX7: YAML directive without document end marker --- src/parser.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/parser.c b/src/parser.c index 1198c737..ec2f8d3e 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1261,7 +1261,10 @@ yaml_parser_process_directives(yaml_parser_t *parser, goto error; } if (token->data.version_directive.major != 1 - || token->data.version_directive.minor != 1) { + || ( + token->data.version_directive.minor != 1 + && token->data.version_directive.minor != 2 + )) { yaml_parser_set_parser_error(parser, "found incompatible YAML document", token->start_mark); goto error;