// 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 // librairie de traitement du pinyin const pinyinizer = require('pinyinizer') // librairie de gestion du hanzi const opencc = require('node-opencc') // librairie de gestion des fichiers xml const builder = require('xmlbuilder') // librairie de gestion des fichiers csv var csv = require('comma-separated-values') // données de stockage var fichierXml = 'new-table.xml' var fichierJson = 'new-table.json' var fichierCSV = 'new-table.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); // utilitaires var tab = '\t' var endLine = '\n' // Variables fichier des fichiers csv, json et xml fichierXml = path.join(repertoireInitial, argument + '.xml') fichierJson = path.join(repertoireInitial, argument + '.json') fichierCSV = path.join(repertoireInitial, argument + '-1.csv') // on crée le fichier xml var feed = builder.create('newtable', { version: '1.0', encoding: 'UTF-8', standalone: true }) // on crée le fichier csv var moncsv = fs.createWriteStream(fichierCSV) // on crée le fichier json var json = fs.createWriteStream(fichierJson) json.write('{"new":[') var fichierATraiter = fs.readFileSync(fichierDonnées, 'UTF-8') // DEBUG // console.log(fichierATraiter); var monjson = new csv(fichierATraiter, { header: [ 'hanzi', 'traditional', 'pinyin', 'translation', 'classifier', 'lesson', 'sound', 'origin' ] }).parse() // la ligne CSV qu'on va écrire dans le fichier CSV var ligneCSV = '' // L'élément xml qui constitue un enregistrement du fichier xml var ele = null monjson.forEach(function (enregistrement) { // DEBUG // console.log(enregistrement.hanzi); ligneCSV = '' ele = null try { enregistrement.traditional = opencc.simplifiedToTraditional( enregistrement.hanzi ) // DEBUG // console.log(enregistrement.hanzi, "**", enregistrement.traditional); // console.log(enregistrement.translation); enregistrement.translation = enregistrement.translation.replace(/;/g, ' /') enregistrement.translation = enregistrement.translation.replace( /, /g, ' / ' ) if (enregistrement.classifier == '') { enregistrement.classifier = '' } // console.log(enregistrement.translation); ligneCSV = enregistrement.hanzi + tab + enregistrement.traditional + tab + enregistrement.pinyin + tab + enregistrement.translation + tab + enregistrement.classifier + tab + enregistrement.lesson + tab + enregistrement.sound + tab + enregistrement.origin + endLine // DEBUG console.log(ligneCSV); // Ecriture de la ligne CSV moncsv.write(ligneCSV) // Ecriture de la ligne json json.write(JSON.stringify(enregistrement) + ',') var ele = feed.ele({ enregistrement }) } catch (err) { console.log(err) } }) // DEBUG // console.log(monjson); // Fermeture des fichiers json, xml et csv // on ferme le fichier CSV moncsv.end() // on écrit le fichier xml fs.writeFileSync( fichierXml, feed.end({ pretty: true }) ) // on écrit le fichier Json // fs.writeFileSync(fichierJson, JSON.stringify(maineeduObj), "UTF-8"); json.write('{},]}') json.end()