Add option to disable symbol parsing for ScalarScanner #741
+19
−12
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.
This PR adds an option to
ScalarScanner
to disable the parsing of values containing a leading colon as symbols. This is unexpected behavior when compared with other YAML parsers and when compared with the YAML specification, as symbols are not a concept defined by YAML. I do not expect that we can change the default here as that would break backwards compatibility, so this PR maintains current behavior by leaving the default asparse_symbols: true
, but exposes a way that users can modify the behavior in order to match what is expected based on the YAML specification.The option is added to the
load()
family of methods at the top level as well as to theToRuby
visitor and the associated nodeto_ruby()
method. In all instances, the default value of the newparse_symbols
parameter istrue
in order to maintain backwards-compatible behavior. Passing a value offalse
for this parameter will result in values with leading colons being treated as regular strings.