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.
As a BlockString is a form of a StringValue, no changes were made to the public API. A BlockString is allowed anywhere a StringValue is accepted, pursuant to the current (June 2018) specification.
Considering the scope of the change, I propose that the version number be bumped to 7.2.0, even though there are no public API changes.
The new
ReadBlockString()
method first reads the string, unescaping\"""
to"""
and replacing line termination sequences with\n
. Then the string value is passed to a secondary method (a static local function) to strip leading and trailing blank lines and unindent the text if needed, all according to spec. If the string is small enough, both of these allocations occur on the stack. For larger sequences, heap allocation may be necessary. A multitude of tests are added to cover the range of indenting scenarios and so on that are provided for by the spec.