👌 IMPROVE: Directive option parsing #796
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, directive options blocks have been parsed using a "full" YAML parser.
This is unnecessary, and problematic since only a mapping of string key to string value is required,
not any of the other YAML constructs; sequences, flow style, anchors, aliases, tags, ...,
It required addition handling of non-string values (failing or converting back to strings),
and could also cause confusion when values were not parsed as strings (see e.g. #712).
This commit, introduces a new "restricted" YAML parser (adapted from pyyaml),
which will maintain back-compatibilty with existing options blocks, but will only parse mappings of string keys to string values (including multi-line strings and comment parsing).
Parsing errors are also improved, by reporting the exact line on which the error occured.
closes #382