// 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 = `
`
fin = `
`
// 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)
// transformation et écriture des lignes dans le fichier xml
moncsv.forEach(function(enregistrement){
// DEBUG
// try {
console.log(enregistrement.numero)
console.log(enregistrement.pinyin)
console.log(enregistrement.hanzi)
console.log(enregistrement.translation)
// } catch (err) {
// console.log (erreur)
// }
monxml.write('')
monxml.write(rc)
monxml.write(tab)
monxml.write('')
monxml.write(enregistrement.numero)
monxml.write('')
monxml.write(rc)
monxml.write(tab)
monxml.write('')
monxml.write(enregistrement.pinyin)
monxml.write('')
monxml.write(rc)
monxml.write('
')
monxml.write(rc)
monxml.write('')
monxml.write(rc)
monxml.write(tab)
monxml.write('')
monxml.write(rc)
monxml.write(tab)
monxml.write('')
monxml.write(enregistrement.hanzi)
monxml.write('')
monxml.write(rc)
monxml.write('
')
monxml.write(rc)
monxml.write('')
monxml.write(rc)
monxml.write(tab)
monxml.write('')
monxml.write(rc)
monxml.write(tab)
monxml.write('')
monxml.write(enregistrement.translation)
monxml.write('')
monxml.write(rc)
monxml.write('
')
monxml.write(rc)
monxml.write('
')
resetLigne()
})
// écriture de la fin dans le fichier xml
monxml.write(fin)
// fermeture du fichier de sortie xml
monxml.end()