fix: wrap custom field titles that contain the delimiter#286
Open
greymoth-jp wants to merge 1 commit into
Open
fix: wrap custom field titles that contain the delimiter#286greymoth-jp wants to merge 1 commit into
greymoth-jp wants to merge 1 commit into
Conversation
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.
When a key is given a custom title via
keys: [{ field, title }], the title is written into the header row without passing throughwrapFieldValueIfNecessary. Field names (inwrapHeaderFields) and record values both go through that helper, so a title that contains the field delimiter, the wrap delimiter, or a line break leaks into the header and breaks the column layout.Reading that output back with
csv2jsonreturns{"Price":100," USD":2,"Qty":""}rather than two aligned columns.RFC 4180 treats the header line as a normal record (section 2.3), and any field containing the delimiter or a double quote must be enclosed in double quotes (sections 2.6 and 2.7). The title replaces a field name in the header, so it needs the same wrapping the field name would have received.
The fix wraps the title in
generateCsvHeaderwith the existingwrapFieldValueIfNecessaryhelper. Non-titled header fields are already wrapped earlier inwrapHeaderFields, so only the title branch is changed, which avoids double-wrapping.Added a regression test; the full suite passes.