// 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 gestion du hanzi
const opencc = require('node-opencc');

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

// données de stockage
var fichierCSV = "Wohok-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);

// données de stockage
var fichierCSV = "X-" + argument;

// utilitaires
var tab = "\t";
var endLine = "\n";


// Variables fichier des fichiers csv, json et xml
fichierJson = path.join(repertoireInitial, argument + ".json");

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

var fichierATraiter = fs.readFileSync(fichierDonnées, "UTF-8");

// DEBUG
// console.log(fichierATraiter);

var monjson = new csv(fichierATraiter, {
    header: ['hanzi', 'pinyin', 'grammar', 'translation']
  }).parse();


// la ligne CSV qu'on va écrire dans le fichier CSV  
var ligneCSV = "";

var sauve = "";

monjson.forEach(function(enregistrement){
    // DEBUG
    // console.log(enregistrement);

    ligneCSV = "";
    

    if (enregistrement.grammar === "undefined") {
          // console.log(enregistrement.hanzi, "**",enregistrement.pinyin);
          enregistrement.grammar = enregistrement.hanzi;
          enregistrement.translation = enregistrement.pinyin;  
          enregistrement.hanzi = sauve.hanzi;
          enregistrement.pinyin = sauve.pinyin;  
          // console.log("nouveau: ", enregistrement.hanzi, "**",enregistrement.pinyin);
    }
    
    sauve = enregistrement;
    ligneCSV = enregistrement.hanzi +  tab + enregistrement.pinyin + tab + enregistrement.grammar + tab +enregistrement.translation + endLine;
    // DEBUG console.log(ligneCSV);
    // Ecriture de la ligne CSV
    moncsv.write(ligneCSV);
})


  // DEBUG
  // console.log(monjson);



// Fermeture des fichiers json, xml et csv
// on ferme le fichier CSV 
moncsv.end();
