vocab.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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 lignes 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 csv
  13. var csv = require('comma-separated-values')
  14. // Nom du fichier entrée csv
  15. // en entrée, on donne le nom du fichier à traiter sans le répertoire
  16. var repertoireInitial = './'
  17. var argument = argv._[0]
  18. fichierDonnées = path.join(repertoireInitial, argument)
  19. // DEBUG
  20. // console.log(fichierDonnées);
  21. // Nom du fichier xml
  22. fichierXml = fichierDonnées.replace('.csv','.xml')
  23. // DEBUG
  24. // console.log(fichierXml)
  25. var tab = "\t"
  26. var rc = "\n"
  27. var ligne = {
  28. pinyin: '',
  29. hanzi: '',
  30. translations: '',
  31. themodule: '',
  32. unit : '',
  33. book: ''
  34. }
  35. function resetLigne () {
  36. pinyin = ''
  37. hanzi = ''
  38. translations = ''
  39. themodule = ''
  40. unit = ''
  41. book = ''
  42. }
  43. // la ligne CSV qu'on lit
  44. var ligneCSV = ''
  45. prelude = `
  46. <informaltable frame="none" tabstyle="striped" colsep="0" rowsep="0">
  47. <tgroup cols="3">
  48. <colspec colnum="1" colname="col1" colwidth="2.0*"/>
  49. <colspec colnum="2" colname="col2" colwidth="2.0*"/>
  50. <colspec colnum="3" colname="col3" colwidth="4.0*"/>
  51. <tbody>
  52. `
  53. fin = `
  54. </tbody>
  55. </tgroup>
  56. </informaltable>
  57. `
  58. // on crée et ouvre le fichier de sortie xml
  59. var monxml = fs.createWriteStream(fichierXml);
  60. // on ouvre et lit le fichier csv
  61. var fichierATraiter = fs.readFileSync(fichierDonnées, "UTF-8");
  62. var moncsv = new csv(fichierATraiter, {
  63. header: [
  64. 'pinyin',
  65. 'hanzi',
  66. 'translation',
  67. 'themodule',
  68. 'unit',
  69. 'book'
  70. ],
  71. cast: [
  72. 'String',
  73. 'String',
  74. 'String',
  75. 'String',
  76. 'String',
  77. 'String'
  78. ]
  79. }).parse();
  80. // écriture du prélude
  81. monxml.write(prelude)
  82. monxml.write(rc)
  83. // transformation et écriture des lignes dans le fichier xml
  84. moncsv.forEach(function(enregistrement){
  85. // DEBUG
  86. //console.log(enregistrement.hanzi)
  87. monxml.write('<row>')
  88. monxml.write(rc)
  89. monxml.write(tab)
  90. monxml.write('<entry>')
  91. monxml.write(rc)
  92. monxml.write(tab)
  93. monxml.write(tab)
  94. monxml.write('<foreignphrase xml:lang="cmn-Latn-pinyin">')
  95. monxml.write(enregistrement.pinyin)
  96. monxml.write('</foreignphrase>')
  97. monxml.write(rc)
  98. monxml.write(tab)
  99. monxml.write('</entry>')
  100. monxml.write(rc)
  101. monxml.write(tab)
  102. monxml.write('<entry>')
  103. monxml.write(rc)
  104. monxml.write(tab)
  105. monxml.write(tab)
  106. monxml.write('<foreignphrase xml:lang="cmn-Hani">')
  107. monxml.write(enregistrement.hanzi)
  108. monxml.write('</foreignphrase>')
  109. monxml.write(rc)
  110. monxml.write(tab)
  111. monxml.write('</entry>')
  112. monxml.write(rc)
  113. monxml.write('<entry>')
  114. monxml.write(rc)
  115. monxml.write(tab)
  116. monxml.write(tab)
  117. monxml.write(enregistrement.translation)
  118. monxml.write(rc)
  119. monxml.write(tab)
  120. monxml.write('</entry>')
  121. monxml.write(rc)
  122. monxml.write('</row>')
  123. monxml.write(rc)
  124. })
  125. // écriture de la fin dans le fichier xml
  126. monxml.write(fin)
  127. // fermeture du fichier de sortie xml
  128. monxml.end()