diag.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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. lettre: '',
  29. pinyin: '',
  30. hanzi: '',
  31. translation: '',
  32. themodule: '',
  33. unit: '',
  34. book: ''
  35. }
  36. function resetLigne() {
  37. lettre = ''
  38. pinyin = ''
  39. hanzi = ''
  40. translation = ''
  41. themodule = ''
  42. unit = ''
  43. book = ''
  44. }
  45. // la ligne CSV qu'on lit
  46. var ligneCSV = ''
  47. prelude = `
  48. <informaltable frame="none" colsep="0" rowsep="0">
  49. <tgroup cols="2">
  50. <colspec colnum="1" colname="col1" colwidth="2.0*"/>
  51. <colspec colnum="2" colname="col2" colwidth="15.0*"/>
  52. <tbody>
  53. `
  54. fin = `
  55. </tbody>
  56. </tgroup>
  57. </informaltable>
  58. `
  59. // on crée et ouvre le fichier de sortie xml
  60. var monxml = fs.createWriteStream(fichierXml);
  61. // on ouvre et lit le fichier csv
  62. var fichierATraiter = fs.readFileSync(fichierDonnées, "UTF-8");
  63. var moncsv = new csv(fichierATraiter, {
  64. header: [
  65. 'lettre',
  66. 'pinyin',
  67. 'hanzi',
  68. 'translation',
  69. 'themodule',
  70. 'unit',
  71. 'book'
  72. ],
  73. cast: [
  74. 'String',
  75. 'String',
  76. 'String',
  77. 'String',
  78. 'String',
  79. 'String',
  80. 'String'
  81. ]
  82. }).parse();
  83. // écriture du prélude
  84. monxml.write(prelude)
  85. monxml.write(rc)
  86. lineNumber = 0
  87. // transformation et écriture des lignes dans le fichier xml
  88. moncsv.forEach(function (enregistrement) {
  89. // DEBUG
  90. //console.log(enregistrement.numero)
  91. lineNumber = lineNumber + 1
  92. console.log('lineNumber : ',lineNumber)
  93. monxml.write('<row>')
  94. monxml.write(rc)
  95. monxml.write(tab)
  96. monxml.write('<entry>')
  97. monxml.write(enregistrement.lettre)
  98. monxml.write('</entry>')
  99. monxml.write(rc)
  100. monxml.write(tab)
  101. monxml.write('<entry><foreignphrase xml:lang="cmn-Latn-pinyin">')
  102. monxml.write(enregistrement.pinyin)
  103. monxml.write('</foreignphrase></entry>')
  104. monxml.write(rc)
  105. monxml.write('</row>')
  106. monxml.write(rc)
  107. monxml.write('<row>')
  108. monxml.write(rc)
  109. monxml.write(tab)
  110. monxml.write('<entry/>')
  111. monxml.write(rc)
  112. monxml.write(tab)
  113. monxml.write('<entry><foreignphrase xml:lang="cmn-Hani">')
  114. monxml.write(enregistrement.hanzi)
  115. monxml.write('</foreignphrase></entry>')
  116. monxml.write(rc)
  117. monxml.write('</row>')
  118. monxml.write(rc)
  119. monxml.write('<row>')
  120. monxml.write(rc)
  121. monxml.write(tab)
  122. monxml.write('<entry/>')
  123. monxml.write(rc)
  124. monxml.write(tab)
  125. monxml.write('<entry>')
  126. monxml.write(enregistrement.translation)
  127. monxml.write('</entry>')
  128. monxml.write(rc)
  129. monxml.write('</row>')
  130. monxml.write(rc)
  131. resetLigne()
  132. })
  133. // écriture de la fin dans le fichier xml
  134. monxml.write(fin)
  135. // fermeture du fichier de sortie xml
  136. monxml.end()