#!/usr/bin/env node
// Quand on veut garder les double quotes présentes dans les champs d'un TSV, on
// peut utiliser ce script pour les échapper.
const fs = require('fs/promises');
const fixField = (field) => {
if (!field.includes('"')) return field;
return `"${field.replace(/"/g, '""')}"`;
}
const fixLine = (line) => {
const fields = line.split("\t");
return fields.map(fixField).join("\t");
}
const getFixedTsvQuotes = (content) => {
const lines = content.split("\r\n");
const fixedLines = lines.map(fixLine);
const fixedContent = fixedLines.join("\n");
return fixedContent;
}
const fixFile = async (fileName) => {
const content = await fs.readFile(fileName, { encoding: "utf8"});
const fixedContent = getFixedTsvQuotes(content);
await fs.writeFile(fileName, fixedContent, { encoding: "utf8" });
};
const args = process.argv.slice(2);
if (!args.length) {
console.error(`${process.argv[1]} a besoin d'un nom fichier à corriger.`);
process.exit(1);
}
fixFile(args[0]);