// 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; var stringify = require('json-stringify'); // 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 = "chinwa-table.xml"; var fichierJson = "chinwa-table.json"; var fichierCSV = "chinwa-table.csv"; // en entrée, on donne le nom du fichier à traiter sans le répertoire var repertoireInitial = "../Listes-mots-formatés/"; 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('mandarin888table', { 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('{"mandarin888":['); var fichierATraiter = fs.readFileSync(fichierDonnées, "UTF-8"); // DEBUG // console.log(fichierATraiter); var monjson = new csv(fichierATraiter, { header: [ 'hanzi', 'pinyin', 'translation', 'sequence', 'lesson', 'origin'], cast: [ 'String', 'String', 'String', 'String', 'String', 'String'] }).parse(); // le json de sortie var sortie = {}; // numéro, hanzi, traditionel, pinyin, traduction, exempleHanzi, exempleTraditionel, exemplePinyin, exempleTraduction, leçon, origine // 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; var l =0; function titleCase(string) { return string.charAt(0).toUpperCase() + string.slice(1); } monjson.forEach(function(enregistrement){ // DEBUG // console.log(enregistrement.hanzi); l = l + 1; console.log(l); ligneCSV = ""; ele = null; sortie = {}; try { sortie.hanzi = enregistrement.hanzi.trim(); sortie.traditional = opencc.simplifiedToTraditional(enregistrement.hanzi).trim(); sortie.pinyin = titleCase(enregistrement.pinyin.trim()); sortie.translation = titleCase(enregistrement.translation.trim()); sortie.sequence = enregistrement.sequence; sortie.lesson = enregistrement.lesson; sortie.origin = enregistrement.origin; ligneCSV = sortie.hanzi + tab + sortie.traditional + tab + sortie.pinyin + tab + sortie.translation + tab + sortie.sequence + tab + sortie.lesson + tab + sortie.origin + endLine; // DEBUG console.log(ligneCSV); // Ecriture de la ligne CSV moncsv.write(ligneCSV); // Ecriture de la ligne json json.write(stringify(sortie, null, 2, {offset: 4}) + ',\n'); // écriture d ela ligne xml var ele = feed.ele({sortie}); } 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();