123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- // 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
- // 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 fichierXml = 'hsk16-table.xml'
- var fichierJson = 'hsk16-table.json'
- var fichierCSV = 'hsk16-table.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);
- // 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('hsk16table', {
- version: '1.0',
- encoding: 'UTF-8',
- standalone: true
- })
- // on crée le fichier csv
- var moncsv = fs.createWriteStream(fichierCSV)
- // on crée le fichier json
- var json = fs.createWriteStream(fichierJson)
- json.write('{"hsk16":[')
- var fichierATraiter = fs.readFileSync(fichierDonnées, 'UTF-8')
- // DEBUG
- // console.log(fichierATraiter);
- var monjson = new csv(fichierATraiter, {
- header: [
- 'hanzi',
- 'traditional',
- 'pinyin',
- 'translation',
- 'grammartype',
- 'classifier',
- 'lesson',
- 'sound',
- 'origin'
- ]
- }).parse()
- // 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
- monjson.forEach(function (enregistrement) {
- // DEBUG
- // console.log(enregistrement.hanzi);
- ligneCSV = ''
- ele = null
- try {
- // enregistrement.traditional = opencc.simplifiedToTraditional(
- // enregistrement.hanzi
- // )
- // DEBUG
- // console.log(enregistrement.hanzi, "**", enregistrement.traditional);
- // console.log(enregistrement.translation);
- enregistrement.translation = enregistrement.translation.replace(/;/g, ' /')
- enregistrement.translation = enregistrement.translation.replace(
- /, /g,
- ' / '
- )
- if (enregistrement.classifier == '') {
- enregistrement.classifier = ''
- }
- // console.log(enregistrement.translation);
- ligneCSV =
- enregistrement.hanzi +
- tab +
- enregistrement.traditional +
- tab +
- enregistrement.pinyin +
- tab +
- enregistrement.translation +
- tab +
- enregistrement.grammartype +
- tab +
- enregistrement.classifier +
- tab +
- enregistrement.lesson +
- tab +
- enregistrement.sound +
- tab +
- enregistrement.origin +
- endLine
- // DEBUG console.log(ligneCSV);
- // Ecriture de la ligne CSV
- moncsv.write(ligneCSV)
- // Ecriture de la ligne json
- json.write(JSON.stringify(enregistrement) + ',')
- var ele = feed.ele({ enregistrement })
- } catch (err) {
- console.log(err)
- }
- })
- // DEBUG
- // console.log(monjson);
- // Fermeture des fichiers json, xml et csv
- // on ferme le fichier CSV
- moncsv.end()
- // on écrit le fichier xml
- fs.writeFileSync(
- fichierXml,
- feed.end({
- pretty: true
- })
- )
- // on écrit le fichier Json
- // fs.writeFileSync(fichierJson, JSON.stringify(maineeduObj), "UTF-8");
- json.write('{},]}')
- json.end()
|