import { unquoteIfQuoted } from '@utils/string'; export function csvToTsv( input: string, delimiter: string, quoteCharacter: string, commentCharacter: string, header: boolean, emptyLines: boolean ): string { // edge case: if input is empty, return empty string if (!input) return ''; const lines = input.split('\n'); // is header is set to false, remove the first line if (!header) lines.shift(); const tsvLines = lines.map((line) => { // if comment character is set, remove the lines that start with it if (commentCharacter && line.startsWith(commentCharacter)) return ''; const cells = line.split(delimiter); cells.forEach((cell, index) => { cells[index] = unquoteIfQuoted(cell, quoteCharacter); }); return cells.join('\t'); }); // if empty lines is set to true, remove the empty lines return !emptyLines ? tsvLines.join('\n') : tsvLines.filter((line) => line.trim() !== '').join('\n'); }