cfdict.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. // libvrairie de lecture de ligens de texte
  7. //var readline = require('readline');
  8. // librairie de traitement du pinyin
  9. const pinyinizer = require('pinyinizer');
  10. // librairie de gestion du hanzi
  11. //const opencc = require('node-opencc');
  12. // librairie de gestion des fichiers xml
  13. const builder = require('xmlbuilder');
  14. // librairie de gestion des fichiers csv
  15. //var csv = require('comma-separated-values');
  16. // données de stockage
  17. //var dataJson = [];
  18. //var dataCSV = [];
  19. // les noms de fichiers
  20. var fichierXml = '';
  21. var fichierJson = '';
  22. var fichierCSV = '';
  23. // en entrée, on donne le nom du fichier à traiter sans le répertoire
  24. var repertoireInitial = './';
  25. var argument = argv._[0];
  26. var fichierDonnees = path.join(repertoireInitial, argument);
  27. // DEBUG
  28. // console.log(fichierDonnees);
  29. var data = require(fichierDonnees);
  30. // utilitaires
  31. var tab = '\t';
  32. var endLine = '\n';
  33. // Variables fichier des fichiers csv, json et xml
  34. fichierXml = path.join(repertoireInitial, argument + '.xml');
  35. fichierJson = path.join(repertoireInitial, argument + '.json');
  36. fichierCSV = path.join(repertoireInitial, argument + '-1.csv');
  37. var ligne = {
  38. hanzi: '',
  39. traditional: '',
  40. pinyin: '',
  41. translations: [],
  42. origin: ''
  43. }
  44. // on crée le fichier csv
  45. var moncsv = fs.createWriteStream(fichierCSV);
  46. // on crée le fichier json
  47. var json = fs.createWriteStream(fichierJson);
  48. json.write('{"CFdict":[');
  49. // on crée le fichier xml
  50. var feed = builder.create('cfdicttable', {
  51. version: '1.0',
  52. encoding: 'UTF-8',
  53. standalone: true
  54. });
  55. // la ligne CSV qu'on va écrire dans le fichier CSV
  56. var ligneCSV = '';
  57. // L'élément xml qui constitue un enregistrement du fichier xml
  58. var ele = null;
  59. function resetLigne () {
  60. ligne.hanzi = '';
  61. ligne.traditional = '';
  62. ligne.pinyin = '';
  63. ligne.translations = [];
  64. ligne.origin = '';
  65. }
  66. var mesDonnees = data.dic.word;
  67. mesDonnees.forEach(function(item, index){
  68. resetLigne()
  69. ligneCSV = ""
  70. pinyin = pinyinizer.pinyinize(item.py[0])
  71. traduction = item.trans[0].fr
  72. //console.log(index, item.simp[0], item.trad[0], pinyin, item.trans[0].fr)
  73. ligne.hanzi = item.simp[0]
  74. ligne.traditional = item.trad[0]
  75. ligne.pinyin = pinyin
  76. ligne.translations = traduction
  77. ligne.origin = "CFdict"
  78. //console.log(ligne)
  79. trad = traduction.toString()
  80. trad = trad.replace(/\,/g, ' / ' )
  81. ligneCSV = item.simp[0] + tab +
  82. item.trad[0] + tab +
  83. pinyin + tab +
  84. trad + tab +
  85. "CFdict" +
  86. endLine
  87. //console.log(ligneCSV)
  88. // Ecriture de la ligne CSV
  89. moncsv.write(ligneCSV);
  90. // Ecriture de la ligne json
  91. json.write(JSON.stringify(ligne) + ",");
  92. // écriture de la ligne xml
  93. var ele = feed.ele({ligne});
  94. });
  95. // Fermeture des fichiers json, xml et csv
  96. // on ferme le fichier CSV
  97. moncsv.end();
  98. // on écrit le fichier xml
  99. fs.writeFileSync(fichierXml, feed.end({
  100. pretty: true
  101. }));
  102. // on écrit le fichier Json
  103. // fs.writeFileSync(fichierJson, JSON.stringify(maineeduObj), "UTF-8");
  104. json.write(']}');
  105. json.end();