123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- // 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: [
- 'numero',
- 'hanzi',
- 'pinyin',
- 'translation',
- 'exampleHanzi',
- 'examplePinyin',
- 'exampleTranslation',
- 'lesson',
- 'origin'],
- cast: [
- 'String',
- 'String',
- 'String',
- '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;
- function titleCase(string) { return string.charAt(0).toUpperCase() + string.slice(1); }
- monjson.forEach(function(enregistrement){
- // DEBUG
- // console.log(enregistrement.hanzi);
- ligneCSV = "";
- ele = null;
- sortie = {};
- try {
- sortie.numero = enregistrement.numero;
- sortie.hanzi = enregistrement.hanzi.trim();
- sortie.traditional = opencc.simplifiedToTraditional(enregistrement.hanzi).trim();
- sortie.pinyin = enregistrement.pinyin.trim();
- sortie.translation = enregistrement.translation.trim();
- sortie.exampleHanzi = enregistrement.exampleHanzi.trim();
- sortie.exampleTraditional = opencc.simplifiedToTraditional(enregistrement.exampleHanzi).trim();
- sortie.examplePinyin = titleCase(enregistrement.examplePinyin.trim());
- sortie.exampleTranslation = titleCase(enregistrement.exampleTranslation.trim());
- sortie.lesson = enregistrement.lesson;
- sortie.origin = enregistrement.origin;
- ligneCSV =
- sortie.numero + tab +
- sortie.hanzi + tab +
- sortie.traditional + tab +
- sortie.pinyin + tab +
- sortie.translation + tab +
- sortie.exampleHanzi + tab +
- sortie.exampleTraditional + tab +
- sortie.examplePinyin + tab +
- sortie.exampleTranslation + 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();
|