123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- // librairie de gestion des répertoires et fichiers
- const fs = require('fs')
- const path = require('path')
- // librairie de gestion des arguments de la ligne de commande
- var argv = require('optimist').argv
- // libvrairie de lecture de lignes de texte
- var readline = require('readline')
- // librairie de traitement du pinyin
- // const pinyinizer = require('pinyinizer')
- // librairie de gestion du hanzi
- // const opencc = require('node-opencc')
- // librairie de gestion des fichiers csv
- var csv = require('comma-separated-values')
- // Nom du fichier entrée csv
- // en entrée, on donne le nom du fichier à traiter sans le répertoire
- var repertoireInitial = './'
- var argument = argv._[0]
- fichierDonnées = path.join(repertoireInitial, argument)
- // DEBUG
- // console.log(fichierDonnées);
- // Nom du fichier xml
- fichierXml = fichierDonnées.replace('.csv', '.xml')
- // DEBUG
- // console.log(fichierXml)
- var tab = "\t"
- var rc = "\n"
- var ligne = {
- numero: '',
- lettre: '',
- pinyin: '',
- hanzi: '',
- translation: '',
- themodule: '',
- unit: '',
- book: ''
- }
- function resetLigne() {
- numero = ''
- lettre = ''
- pinyin = ''
- hanzi = ''
- translation = ''
- themodule = ''
- unit = ''
- book = ''
- }
- // la ligne CSV qu'on lit
- var ligneCSV = ''
- prelude = `
- <informaltable frame="none" colsep="0" rowsep="0">
- <tgroup cols="3">
- <colspec colnum="1" colname="col1" colwidth="2.0*"/>
- <colspec colnum="2" colname="col2" colwidth="2.0*"/>
- <colspec colnum="3" colname="col3" colwidth="15.0*"/>
- <tbody>
- `
- fin = `
- </tbody>
- </tgroup>
- </informaltable>
- `
- // on crée et ouvre le fichier de sortie xml
- var monxml = fs.createWriteStream(fichierXml);
- // on ouvre et lit le fichier csv
- var fichierATraiter = fs.readFileSync(fichierDonnées, "UTF-8");
- var moncsv = new csv(fichierATraiter, {
- header: [
- 'numero',
- 'lettre',
- 'pinyin',
- 'hanzi',
- 'translation',
- 'themodule',
- 'unit',
- 'book'
- ],
- cast: [
- 'String',
- 'String',
- 'String',
- 'String',
- 'String',
- 'String',
- 'String',
- 'String'
- ]
- }).parse();
- // écriture du prélude
- monxml.write(prelude)
- monxml.write(rc)
- lineNumber = 0
- // transformation et écriture des lignes dans le fichier xml
- moncsv.forEach(function (enregistrement) {
- // DEBUG
- //console.log(enregistrement.numero)
- lineNumber = lineNumber + 1
- console.log('lineNumber : ',lineNumber)
- monxml.write('<row>')
- monxml.write(rc)
- monxml.write(tab)
- monxml.write('<entry>')
- monxml.write(enregistrement.numero)
- monxml.write('</entry>')
- monxml.write(rc)
- monxml.write('<entry>')
- monxml.write(enregistrement.lettre)
- monxml.write('</entry>')
- monxml.write(rc)
- monxml.write(tab)
- monxml.write('<entry><foreignphrase xml:lang="cmn-Latn-pinyin">')
- monxml.write(enregistrement.pinyin)
- monxml.write('</foreignphrase></entry>')
- monxml.write(rc)
- monxml.write('</row>')
- monxml.write(rc)
- monxml.write('<row>')
- monxml.write(rc)
- monxml.write(tab)
- monxml.write('<entry/>')
- monxml.write(rc)
- monxml.write(tab)
- monxml.write('<entry/>')
- monxml.write(rc)
- monxml.write(tab)
- monxml.write('<entry><foreignphrase xml:lang="cmn-Hani">')
- monxml.write(enregistrement.hanzi)
- monxml.write('</foreignphrase></entry>')
- monxml.write(rc)
- monxml.write('</row>')
- monxml.write(rc)
- monxml.write('<row>')
- monxml.write(rc)
- monxml.write(tab)
- monxml.write('<entry/>')
- monxml.write(rc)
- monxml.write(tab)
- monxml.write('<entry/>')
- monxml.write(rc)
- monxml.write(tab)
- monxml.write('<entry>')
- monxml.write(enregistrement.translation)
- monxml.write('</entry>')
- monxml.write(rc)
- monxml.write('</row>')
- monxml.write(rc)
- resetLigne()
- })
- // écriture de la fin dans le fichier xml
- monxml.write(fin)
- // fermeture du fichier de sortie xml
- monxml.end()
|