// 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 ligens 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 xml
const builder = require('xmlbuilder');

// librairie de gestion des fichiers csv
//var csv = require('comma-separated-values');

// données de stockage
//var dataJson = [];
//var dataCSV = [];

// les noms de fichiers
var fichierXml = '';
var fichierJson = '';
var fichierCSV = '';

// en entrée, on donne le nom du fichier à traiter sans le répertoire
var repertoireInitial = './';
var argument = argv._[0];

var fichierDonnees = path.join(repertoireInitial, argument);
// DEBUG
// console.log(fichierDonnees);

var data = require(fichierDonnees);

// 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');


var ligne = {
  hanzi: '',
  traditional: '',
  pinyin: '',
  translations: [],
  origin: ''
}

// on crée le fichier csv
var moncsv = fs.createWriteStream(fichierCSV);

// on crée le fichier json
var json = fs.createWriteStream(fichierJson);
json.write('{"CFdict":[');

// on crée le fichier xml
var feed = builder.create('cfdicttable', {
    version: '1.0',
    encoding: 'UTF-8',
    standalone: true
});


// 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 resetLigne () {
    ligne.hanzi = '';
    ligne.traditional = '';
    ligne.pinyin = '';
    ligne.translations = [];
    ligne.origin = '';
}

var mesDonnees = data.dic.word;

mesDonnees.forEach(function(item, index){
  resetLigne()
  ligneCSV = ""

  pinyin = pinyinizer.pinyinize(item.py[0])
  traduction = item.trans[0].fr
  //console.log(index, item.simp[0], item.trad[0], pinyin, item.trans[0].fr)
  ligne.hanzi = item.simp[0]
  ligne.traditional = item.trad[0]
  ligne.pinyin = pinyin
  ligne.translations = traduction
  ligne.origin = "CFdict"
  //console.log(ligne)
  trad = traduction.toString()
  trad = trad.replace(/\,/g, ' / ' )
  ligneCSV =  item.simp[0] + tab +
              item.trad[0] + tab +
              pinyin + tab +
              trad + tab +
              "CFdict" +
              endLine
  //console.log(ligneCSV)
  // Ecriture de la ligne CSV
        moncsv.write(ligneCSV);
        // Ecriture de la ligne json
        json.write(JSON.stringify(ligne) + ",");
        // écriture de la ligne xml
        var ele = feed.ele({ligne});
});

// 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();
