Skip to content

fix: preserve single-quoted values on decode/encode round-trip - #313

Closed
dyk1454683243-sudo wants to merge 1 commit into
npm:mainfrom
dyk1454683243-sudo:cursor/fix-preserve-single-quotes-242-a867
Closed

dyk1454683243-sudo wants to merge 1 commit into
npm:mainfrom
dyk1454683243-sudo:cursor/fix-preserve-single-quotes-242-a867

Conversation

@dyk1454683243-sudo

Copy link
Copy Markdown

Fixes #242.

parse() then stringify() (with no other changes) was dropping single quotes around values:

ActiveIndex = '0'

became

ActiveIndex=0

unsafe() treats single quotes as quoting syntax and JSON.parses the inner text, so '0' becomes the number 0. 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.

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>
@dyk1454683243-sudo
dyk1454683243-sudo requested a review from a team as a code owner September 20, 2026 16:50
@dyk1454683243-sudo

Copy link
Copy Markdown
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.

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.

[BUG] Single quotes removed from values

2 participants