// librairie de gestion des répertoires et fichiers const fs = require('fs') const path = require('path') // librairie de gestion des arguments de la ligne de commande var argv = require('optimist').argv // libvrairie de lecture de lignes de texte var readline = require('readline') // librairie de traitement du pinyin // const pinyinizer = require('pinyinizer') // librairie de gestion du hanzi // const opencc = require('node-opencc') // librairie de gestion des fichiers csv var csv = require('comma-separated-values') // Nom du fichier entrée csv // en entrée, on donne le nom du fichier à traiter sans le répertoire var repertoireInitial = './' var argument = argv._[0] fichierDonnées = path.join(repertoireInitial, argument) // DEBUG // console.log(fichierDonnées); // Nom du fichier xml fichierXml = fichierDonnées.replace('.csv', '.xml') // DEBUG // console.log(fichierXml) var tab = "\t" var rc = "\n" var ligne = { numero: '', lettre: '', pinyin: '', hanzi: '', translation: '', themodule: '', unit: '', book: '' } function resetLigne() { numero = '' lettre = '' pinyin = '' hanzi = '' translation = '' themodule = '' unit = '' book = '' } // la ligne CSV qu'on lit var ligneCSV = '' prelude = ` ` fin = ` ` // on crée et ouvre le fichier de sortie xml var monxml = fs.createWriteStream(fichierXml); // on ouvre et lit le fichier csv var fichierATraiter = fs.readFileSync(fichierDonnées, "UTF-8"); var moncsv = new csv(fichierATraiter, { header: [ 'numero', 'lettre', 'pinyin', 'hanzi', 'translation', 'themodule', 'unit', 'book' ], cast: [ 'String', 'String', 'String', 'String', 'String', 'String', 'String', 'String' ] }).parse(); // écriture du prélude monxml.write(prelude) monxml.write(rc) lineNumber = 0 // transformation et écriture des lignes dans le fichier xml moncsv.forEach(function (enregistrement) { // DEBUG //console.log(enregistrement.numero) lineNumber = lineNumber + 1 console.log('lineNumber : ',lineNumber) monxml.write('') monxml.write(rc) monxml.write(tab) monxml.write('') monxml.write(enregistrement.numero) monxml.write('') monxml.write(rc) monxml.write('') monxml.write(enregistrement.lettre) monxml.write('') monxml.write(rc) monxml.write(tab) monxml.write('') monxml.write(enregistrement.pinyin) monxml.write('') monxml.write(rc) monxml.write('') monxml.write(rc) monxml.write('') monxml.write(rc) monxml.write(tab) monxml.write('') monxml.write(rc) monxml.write(tab) monxml.write('') monxml.write(rc) monxml.write(tab) monxml.write('') monxml.write(enregistrement.hanzi) monxml.write('') monxml.write(rc) monxml.write('') monxml.write(rc) monxml.write('') monxml.write(rc) monxml.write(tab) monxml.write('') monxml.write(rc) monxml.write(tab) monxml.write('') monxml.write(rc) monxml.write(tab) monxml.write('') monxml.write(enregistrement.translation) monxml.write('') monxml.write(rc) monxml.write('') monxml.write(rc) resetLigne() }) // écriture de la fin dans le fichier xml monxml.write(fin) // fermeture du fichier de sortie xml monxml.end()