frames9.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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. numero: '',
  29. pinyin: '',
  30. hanzi: '',
  31. translation: '',
  32. pinyin1: '',
  33. hanzi1: '',
  34. translation1: '',
  35. themodule: '',
  36. unit: '',
  37. book: ''
  38. }
  39. function resetLigne() {
  40. numero = ''
  41. pinyin = ''
  42. hanzi = ''
  43. translation = ''
  44. pinyin1 = ''
  45. hanzi1 = ''
  46. translation1 = ''
  47. themodule = ''
  48. unit = ''
  49. book = ''
  50. }
  51. // la ligne CSV qu'on lit
  52. var ligneCSV = ''
  53. prelude = `
  54. <informaltable frame="none" colsep="0" rowsep="0">
  55. <tgroup cols="2">
  56. <colspec colnum="1" colname="col1" colwidth="2.0*"/>
  57. <colspec colnum="2" colname="col2" colwidth="15.0*"/>
  58. <tbody>
  59. `
  60. fin = `
  61. </tbody>
  62. </tgroup>
  63. </informaltable>
  64. `
  65. // on crée et ouvre le fichier de sortie xml
  66. var monxml = fs.createWriteStream(fichierXml);
  67. console.log('Création fichier de sortie')
  68. // on ouvre et lit le fichier csv
  69. var fichierATraiter = fs.readFileSync(fichierDonnées, "UTF-8");
  70. console.log('Ouverture fichier de données')
  71. var moncsv = new csv(fichierATraiter, {
  72. header: [
  73. 'numero',
  74. 'pinyin',
  75. 'hanzi',
  76. 'translation',
  77. 'pinyin1',
  78. 'hanzi1',
  79. 'translation1',
  80. 'themodule',
  81. 'unit',
  82. 'book'
  83. ],
  84. cast: [
  85. 'String',
  86. 'String',
  87. 'String',
  88. 'String',
  89. 'String',
  90. 'String',
  91. 'String',
  92. 'String',
  93. 'String',
  94. 'String'
  95. ]
  96. }).parse();
  97. console.log('Ouverture fichier faite')
  98. // écriture du prélude
  99. monxml.write(prelude)
  100. monxml.write(rc)
  101. lineNumber = 0
  102. // transformation et écriture des lignes dans le fichier xml
  103. moncsv.forEach(function (enregistrement) {
  104. // DEBUG
  105. //console.log(enregistrement.numero)
  106. lineNumber = lineNumber + 1
  107. console.log('lineNumber : ',lineNumber)
  108. // row 1
  109. monxml.write('<row>')
  110. monxml.write(rc)
  111. monxml.write('<entry>')
  112. monxml.write(enregistrement.numero)
  113. monxml.write('</entry>')
  114. monxml.write(rc)
  115. monxml.write('<entry><foreignphrase xml:lang="cmn-Latn-pinyin">')
  116. monxml.write(enregistrement.pinyin)
  117. monxml.write('</foreignphrase></entry>')
  118. monxml.write(rc)
  119. monxml.write('</row>')
  120. monxml.write(rc)
  121. // row 2
  122. monxml.write('<row>')
  123. monxml.write(rc)
  124. monxml.write('<entry/>')
  125. monxml.write(rc)
  126. monxml.write('<entry><foreignphrase xml:lang="cmn-Hani">')
  127. monxml.write(enregistrement.hanzi)
  128. monxml.write('</foreignphrase></entry>')
  129. monxml.write(rc)
  130. monxml.write('</row>')
  131. monxml.write(rc)
  132. // row 3
  133. monxml.write('<row>')
  134. monxml.write(rc)
  135. monxml.write('<entry/>')
  136. monxml.write(rc)
  137. monxml.write('<entry>')
  138. monxml.write(enregistrement.translation)
  139. monxml.write('</entry>')
  140. monxml.write(rc)
  141. monxml.write('</row>')
  142. // row 4
  143. monxml.write('<row>')
  144. monxml.write(rc)
  145. monxml.write('<entry/>')
  146. monxml.write(rc)
  147. monxml.write('<entry><foreignphrase xml:lang="cmn-Latn-pinyin">')
  148. monxml.write(enregistrement.pinyin1)
  149. monxml.write('</foreignphrase></entry>')
  150. monxml.write(rc)
  151. monxml.write('</row>')
  152. monxml.write(rc)
  153. monxml.write('<row>')
  154. monxml.write(rc)
  155. monxml.write('<entry/>')
  156. monxml.write(rc)
  157. monxml.write('<entry><foreignphrase xml:lang="cmn-Hani">')
  158. monxml.write(enregistrement.hanzi1)
  159. monxml.write('</foreignphrase></entry>')
  160. monxml.write(rc)
  161. monxml.write('</row>')
  162. monxml.write(rc)
  163. // row 5
  164. monxml.write('<row>')
  165. monxml.write(rc)
  166. monxml.write('<entry/>')
  167. monxml.write(rc)
  168. monxml.write('<entry>')
  169. monxml.write(enregistrement.translation1)
  170. monxml.write('</entry>')
  171. monxml.write(rc)
  172. monxml.write('</row>')
  173. monxml.write(rc)
  174. resetLigne()
  175. })
  176. // écriture de la fin dans le fichier xml
  177. monxml.write(fin)
  178. // fermeture du fichier de sortie xml
  179. monxml.end()