123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- // 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 ligens 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 xml
- const builder = require('xmlbuilder')
- // librairie de gestion des fichiers csv
- var csv = require('comma-separated-values')
- // données de stockage
- var dataJson = []
- var dataCSV = []
- // les noms de fichiers
- var fichierXml = ''
- var fichierJson = ''
- var fichierCSV = ''
- // 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);
- // utilitaires
- var tab = '\t'
- var endLine = '\n'
- // Variables fichier des fichiers csv, json et xml
- fichierXml = path.join(repertoireInitial, argument + '.xml')
- fichierJson = path.join(repertoireInitial, argument + '.json')
- fichierCSV = path.join(repertoireInitial, argument + '-1.csv')
- // on crée le fichier xml
- var feed = builder.create('dicotable', {
- version: '1.0',
- encoding: 'UTF-8',
- standalone: true
- })
- var ligne = {
- hanzi: '',
- traditional: '',
- pinyin: '',
- translations: []
- }
- var chinois = ''
- var phonetic = ''
- var traduc = ''
- var i, j = 0
- function resetLigne () {
- ligne.hanzi = ''
- ligne.traditional = ''
- ligne.pinyin = ''
- ligne.translations = []
- }
- // la ligne CSV qu'on va écrire dans le fichier CSV
- var ligneCSV = ''
- // L'élément xml qui constitue un enregistrement du fichier xml
- var ele = null
- var i = 0
- readline
- .createInterface({
- input: fs.createReadStream(fichierDonnées),
- terminal: false
- })
- .on('line', function (line) {
- // console.log('Line: ' + line);
- if (line[0] != '#') {
- chinois = line.split(' ', 2)
- // console.log(chinois[0], " ## ", chinois[1]);
- ligne.traditional = chinois[0]
- ligne.hanzi = chinois[1]
- i = line.search(/\[/)
- j = line.search(/\]/)
- phonetic = line.substr(i + 1, j - i - 1)
- // traitement des champs pinyin avec des chiffres
- phonetic = phonetic.toLowerCase()
- // on va tester ça ...
- try {
- var sauve = phonetic
- phonetic = pinyinizer.pinyinize(phonetic)
- phonetic = phonetic.replace(/5/g, '')
- } catch (err) {
- console.log('Erreur: ' + pinyin)
- phonetic = sauve
- }
- ligne.pinyin = phonetic
- // console.log(phonetic);
- ligne.translations = line.split(/\//g)
- var l = ligne.translations.length
- ligne.translations.pop()
- ligne.translations.shift()
- var temp = ligne.translations.join(' / ')
- // console.log(l);
- // console.log(ligne.translations);
- ligneCSV =
- ligne.hanzi +
- tab +
- ligne.traditional +
- tab +
- ligne.pinyin +
- tab +
- temp +
- endLine
- // console.log(ligneCSV);
- // console.log(ligne);
- // Ecriture de la ligne CSV
- // console.log('On écrit une ligne', ligneCSV)
- dataCSV.push(ligneCSV)
- // moncsv.write(ligneCSV);
- // Ecriture de la ligne json
- // json.write(JSON.stringify(ligne) + ',')
- resetLigne()
- }
- })
- .on('close', () => {
- // console.log(dataCSV);
- dataCSV.forEach(li => {
- console.log(li)
- moncsv.write(li)
- })
- console.log('Have a great day!')
- process.exit(0)
- })
- // on crée le fichier csv
- var moncsv = fs.createWriteStream(fichierCSV)
- // on crée le fichier json
- var json = fs.createWriteStream(fichierJson)
- json.write('{"dico":[')
- // On écrit le fichier CSV
- // test de la structure de données
- console.log(dataCSV);
- dataCSV.forEach(li => {
- console.log(li)
- moncsv.write(li)
- })
- // On écrit le fichier JSON
- // Fermeture des fichiers json, xml et csv
- // on écrit la fin du fichier Json
- json.write(']}')
- json.end()
- // on ferme le fichier CSV
- moncsv.end()
- // on écrit le fichier xml
- fs.writeFileSync(
- fichierXml,
- feed.end({
- pretty: true
- })
- )
- // fin du programme
|