mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
CSV: escape quotes in toCSV (#16874)
This commit is contained in:
parent
c3a5204933
commit
2af69ccf0f
@ -48,11 +48,13 @@ function norm(csv: string): string {
|
||||
|
||||
describe('write csv', () => {
|
||||
it('should write the same CSV that we read', () => {
|
||||
const firstRow = [10, 'this "has quotes" inside', true];
|
||||
const path = __dirname + '/testdata/roundtrip.csv';
|
||||
const csv = fs.readFileSync(path, 'utf8');
|
||||
const data = readCSV(csv);
|
||||
const out = toCSV(data, { headerStyle: CSVHeaderStyle.full });
|
||||
expect(data.length).toBe(1);
|
||||
expect(data[0].rows[0]).toEqual(firstRow);
|
||||
expect(data[0].fields.length).toBe(3);
|
||||
expect(norm(out)).toBe(norm(csv));
|
||||
|
||||
@ -63,6 +65,7 @@ describe('write csv', () => {
|
||||
const f = readCSV(shorter);
|
||||
const fields = f[0].fields;
|
||||
expect(fields.length).toBe(3);
|
||||
expect(f[0].rows[0]).toEqual(firstRow);
|
||||
expect(fields.map(f => f.name).join(',')).toEqual('a,b,c'); // the names
|
||||
});
|
||||
});
|
||||
|
@ -266,7 +266,7 @@ function writeValue(value: any, config: CSVConfig): string {
|
||||
const str = value.toString();
|
||||
if (str.includes('"')) {
|
||||
// Escape the double quote characters
|
||||
return config.quoteChar + str.replace('"', '""') + config.quoteChar;
|
||||
return config.quoteChar + str.replace(/"/gi, '""') + config.quoteChar;
|
||||
}
|
||||
if (str.includes('\n') || str.includes(config.delimiter)) {
|
||||
return config.quoteChar + str + config.quoteChar;
|
||||
|
@ -1,7 +1,7 @@
|
||||
#name#a,b,c
|
||||
#type#number,string,boolean
|
||||
#unit#ms,,s
|
||||
10,AA,true
|
||||
10,"this ""has quotes"" inside",true
|
||||
20,XX,false
|
||||
30,YY,false
|
||||
40,ZZ,true
|
||||
|
|
Loading…
Reference in New Issue
Block a user