Node CSV version 0.2 incluant le support de l'API streaming

Node CSV version 0.2 incluant le support de l'API streaming

WORMS David

By WORMS David

2 juil. 2012

Catégories
Node.js
Tags
CSV
Markdown
Node.js
Streaming
Vous appréciez notre travail......nous recrutons !

Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.

Annoncé en Août, le parser CSV pour Node.js dans sa version 0.2 est sorti hier. Cette version est une mise à jour majeure dans le sens ou elle aligne l’API de la librairie avec les meilleures pratiques en terme de traitement de flux de données. Le parser CSV se comporte désormais à la fois comme un “Stream Writer” et un “Stream Reader”. Attention, pour atteindre cet objectif, un certain nombre de changements ont eu lieu dans l’API rendant le module légèrement incompatible avec les versions précédentes.

Migration

J’ai essayé ici de rapporter tous les changements d’API. Je penserai à mettre à jour cette section avec vos suggestions dans la mesure où j’en aurai oubliés. Les fonctions ‘from*’ et ‘to*’ ont été réécrites par ‘from.’ and ‘to.’. L’évènement ‘data’ est maintenant l’évènement ‘record’. L’évènement ‘data’ reçoit dorénavant une version sérialisée (voir la documentation relative au “stringifier”) de l’évènement ‘record’.

Stream API

C’est ici l’amélioration majeure de l’annonce du mois d’août. Le schéma ci-dessous extrait du code source illustre la structure le l’architecture des flux (“stream”) dans Node.js et l’applique au parser CSV :

|-----------|      |---------|---------|       |---------|
|           |      |         |         |       |         |
|           |      |        CSV        |       |         |
|           |      |         |         |       |         |
|  Stream   |      |  Writer |  Reader |       |  Stream |
|  Reader   |.pipe(|   API   |   API   |).pipe(|  Writer |)
|           |      |         |         |       |         |
|           |      |         |         |       |         |
|-----------|      |---------|---------|       |---------|

Comme on peut le constater, cette version est compatible avec les spécifications de l’API stream. Le parser se comporte à la fois comme un Stream Writer en entré et un Stream Reader en sortie. Exemple :

fs.createReadStream( './in' )
.pipe( csv() )
.pipe( fs.createWriteStream('./out') )

Fonctionnalités utiles

Comme alternative, le module fournis plus fonctions facilitant le développement et accessibles au travers des propriétés from et to. Certaines de ces fonctions existaient déjà dans la version 0.1 et ont simplement été renommées. Par exemple, la fonction csv.fromPath() est maintenant csv.from.path(). De plus, de nouvelles fonctions ont été ajoutées, par exemple csv.to.string. Exemple :

csv()
.from.path( './in' )
.to.string( function(data){ console.log(data) } )

Documentation

Comme déjà expérimenté dans de nombreux projets antérieurs tel que Mecano, renommé Nikita, le contenu du “readme” a été réduit à son minimum, ne s’adressant qu’aux potentiels participants du projet, et la documentation est générées directement depuis le code source. Un script a été écrit spécifiquement pour remplir ce rôle. L’idée est de documenter le code par des commentaires respectant la syntaxe Markdown. Un simple parser écrit à base d’expressions régulières lit chaque fichiers sources, extrait ces commentaires et écrit un fichier Markdown à l’intérieur du répertoire “./doc”. Ce répertoire “./doc” est finalement copié dans le répertoire Jekyll de ce site Internet avant d’être déployé et rendu disponible ici. Note, au moment où j’écris ces lignes, ce script a besoin encore de quelques petits rafistolages et la documentation doit être relue pour corriger la syntaxe Markdown et les erreurs d’orthographes. Comme d’habitude, toutes vos contributions seront les bien venues.

Conclusion

Merci d’essayer cette nouvelle monture et laissez-moi un petit message pour dire ce que vous en pensez.

Partagez cet article

Canada - Maroc - France

Nous sommes une équipe passionnée par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Science le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.

Support Ukrain