Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Always output document end before directive (YAML 1.2 compatibility) #160

Merged
merged 1 commit into from
Mar 26, 2020

Conversation

perlpunk
Copy link
Member

@perlpunk perlpunk commented Dec 26, 2019

In YAML 1.1, the document end marker ... is optional even if the next document starts with a directive:
https://github.com/yaml/pyyaml/blob/master/tests/data/spec-07-09.canonical

%YAML 1.1
---
!!str "foo"
%YAML 1.1
---
!!str "bar"
%YAML 1.1
---
!!str "baz"

It is only required if the scalar is "open ended", for example for plain scalars.

My suggestion would be to make the output 1.2 compatible. It will still be 1.1 compatible, so that shouldn't be a problem.

In YAML 1.2 the ... marker is always required before a directive. So the new output looks like:

%YAML 1.1
---
!!str "foo"
...
%YAML 1.1
---
!!str "bar"
...
%YAML 1.1
---
!!str "baz"

I believe this will also make it easier to resolve #123 (no github, this will not fix 123) which was introduced with the last fixes regarding open_ended. I think I can make a fix for this soon after this issue is fixed.
Fixing #123 without this would be a bit more complicated.

If we do this, we also need to adjust PyYAML to behave the same.

Related issues/commits:

In YAML 1.1, the document end marker `...` is optional even if the next document starts with a directive:
https://github.com/yaml/pyyaml/blob/master/tests/data/spec-07-09.canonical
```
%YAML 1.1
---
!!str "foo"
%YAML 1.1
---
!!str "bar"
%YAML 1.1
---
!!str "baz"
```
It is only required if the scalar is "open ended", for example for plain scalars.

In YAML 1.2 the `...` marker is always required before a directive.

My suggestion would be to make the output 1.2 compatible. It will still be 1.1 compatible, so that shouldn't be a problem.

I believe this will also make it easier to fix #123 which was introduced with the last fixes regarding `open_ended`. I think I can make a fix for this soon after this issue is fixed.
Fixing #123 without this would be a bit more complicated.

If we do this, we also need to adjust PyYAML to behave the same.

Related issues/commits:
- #60
- #122
- 56400d9, 8ee83c0, 56f4b17
@perlpunk perlpunk force-pushed the perlpunk/end-before-directive branch from a7699b3 to 5dba2e3 Compare March 23, 2020 16:31
@perlpunk perlpunk changed the base branch from master to release/0.2.3 March 26, 2020 21:28
@perlpunk perlpunk merged commit 9afa10a into release/0.2.3 Mar 26, 2020
@perlpunk perlpunk deleted the perlpunk/end-before-directive branch April 11, 2020 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant