forme.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // librairie de gestion des répertoires et fichiers
  2. const fs = require("fs");
  3. const path = require("path");
  4. // librairie de gestion des arguments de la ligne de commande
  5. var argv = require("optimist").argv;
  6. // librairie de gestion du hanzi
  7. const opencc = require('node-opencc');
  8. // librairie de gestion des fichiers csv
  9. var csv = require("comma-separated-values");
  10. // données de stockage
  11. var fichierCSV = "Wohok-table.csv";
  12. // en entrée, on donne le nom du fichier à traiter sans le répertoire
  13. var repertoireInitial = "./";
  14. var argument = argv._[0];
  15. fichierDonnées = path.join(repertoireInitial,argument);
  16. // DEBUG
  17. // console.log(fichierDonnées);
  18. // données de stockage
  19. var fichierCSV = "X-" + argument;
  20. // utilitaires
  21. var tab = "\t";
  22. var endLine = "\n";
  23. // Variables fichier des fichiers csv, json et xml
  24. fichierJson = path.join(repertoireInitial, argument + ".json");
  25. // on crée le fichier csv
  26. var moncsv = fs.createWriteStream(fichierCSV);
  27. var fichierATraiter = fs.readFileSync(fichierDonnées, "UTF-8");
  28. // DEBUG
  29. // console.log(fichierATraiter);
  30. var monjson = new csv(fichierATraiter, {
  31. header: ['hanzi', 'pinyin', 'grammar', 'translation']
  32. }).parse();
  33. // la ligne CSV qu'on va écrire dans le fichier CSV
  34. var ligneCSV = "";
  35. var sauve = "";
  36. monjson.forEach(function(enregistrement){
  37. // DEBUG
  38. // console.log(enregistrement);
  39. ligneCSV = "";
  40. if (enregistrement.grammar === "undefined") {
  41. // console.log(enregistrement.hanzi, "**",enregistrement.pinyin);
  42. enregistrement.grammar = enregistrement.hanzi;
  43. enregistrement.translation = enregistrement.pinyin;
  44. enregistrement.hanzi = sauve.hanzi;
  45. enregistrement.pinyin = sauve.pinyin;
  46. // console.log("nouveau: ", enregistrement.hanzi, "**",enregistrement.pinyin);
  47. }
  48. sauve = enregistrement;
  49. ligneCSV = enregistrement.hanzi + tab + enregistrement.pinyin + tab + enregistrement.grammar + tab +enregistrement.translation + endLine;
  50. // DEBUG console.log(ligneCSV);
  51. // Ecriture de la ligne CSV
  52. moncsv.write(ligneCSV);
  53. })
  54. // DEBUG
  55. // console.log(monjson);
  56. // Fermeture des fichiers json, xml et csv
  57. // on ferme le fichier CSV
  58. moncsv.end();