Repository navigation
fix: preserve single-quoted values on decode/encode round-trip - #313
Closed
dyk1454683243-sudo wants to merge 1 commit into
Closed
dyk1454683243-sudo wants to merge 1 commit into
dyk1454683243-sudo wants to merge 1 commit into
Conversation
Fixes npm#242. Parse still unquotes for JS consumers, but stringify now restores single quotes that were present in the original text when it is safe to do so. Unquoted and double-quoted safe values stay unquoted. Co-authored-by: David <dyk1454683243-sudo@users.noreply.github.com>
Author
|
Withdrawing this PR while I clean up a high-volume open-PR backlog. Sorry for the noise — happy to come back later with a focused change if useful. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #242.
parse()thenstringify()(with no other changes) was dropping single quotes around values:became
unsafe()treats single quotes as quoting syntax andJSON.parses the inner text, so'0'becomes the number0.safe()then emits that as a bare value. Software that requires single-quoted INI values can no longer read the file.Parse still unquotes the JavaScript value (the contract from #16). A WeakMap records which keys were single-quoted in the original text.
stringify()of that same object restores single quotes when it is safe — the decoded value does not contain a raw'.Unquoted safe values and double-quoted safe values are still written unquoted, which is the existing encode design.
Regression tests cover the #242 examples, unquoted/double-quoted safe values, special-character quoting, sections, whitespace, and empty quoted values.