Adaltas

Node CSV version 0.2.1

Faisant suite a l’annonce de la version 0.2.0 du parser CSV pour Node.js début octobre, aujourd’hui sort la nouvelle version 0.2.1. Il s’agit essentiellement d’une distribution corrigeant des bugs. Toutefois, quelques fonctionnalités intéressantes ont trouvé leur chemin. La documentation du parser a été mise à jour pour refléter ces changements.

Utilisation des évènements pause/resume dans les flux de données

Voir GitHub issue #52 et issue #54.
Merci à Dan Kearns pour avoir découvert ce bug ainsi qu’à Doug Wilson pour fournir cette superbe “pull request”. C’est une correction importante et implique que tous les utilisateurs de la version 0.2.0 soient encouragés à migrer vers cette nouvelle version.

Transformations asynchrones

Voir GitHub issue #30.
Il semblerait que ce fut la fonctionnalité la plus demandée ces derniers jours. Le parser CSV peut désormais accepter deux types de callbacks, synchrones as asynchrones. La distinction ce fait en fonction de la signature de ses arguments. Le callback sera appelé en mode asynchrone s’il est défini avec trois paramètres, autrement il sera appelé en mode synchrone. Les exemples suivant illustrent ces deux modes en renversant les colonnes de chaque line.

Exemple synchrone:

1
2
3
4
5
csv()
.from('a,b\n1,2')
.to(console.log)
.transform (data, index, callback) ->
  data.reverse()

Exemple asynchrone:

1
2
3
4
5
6
csv()
.from('a,b\n1,2')
.to(console.log)
.transform (data, index, callback) ->
  process.nextTick ->
    callback null, data.reverse()

Numéro de ligne dans les erreurs du parseur

Voir GitHub issue #40.
Merci à E. Timothy Uy pour avoir remonté cette demande. L’idée est d’amèliorer les message d’erreur au sein du parseur avec le numéro de la ligne en cours. De plus, une nouvelle propriété est accessible à l’adresse csv().parser.lines.

Association entre la propriété d’une colonne et son nom

Voir GitHub issue #53.
Cette fonctionnalité revient à Alex Zylman qui avait besoin d’une manière pour afficher ses propres noms de colonnes en sortie. La solution retenue fut de permettre aux options from.options.columns et to.options.columns d’être définies en tant qu’objets. Voici un exemple:

1
2
3
4
5
6
7
data = 'field1,field2,field3\nval1,val2,val3'
csv()
.from(data, columns: true)
.to (data) ->
  data.should.eql 'column1,column3\nval1,val3'
  next()
, columns: {field1: 'column1', field3: 'column3'}, header: true

Prise en compte de l’UTF BOM

Voir GitHub issue #36 et issue #55.
Cette fonctionnalité a été remontée par E. Timothy Uy](https://github.com/tofutim) et implémenté par Doug Wilson.

Mise à jour de la documentation

Voir GitHub issue #56.
Merci à Kevin Old qui a pris le temps de passé sur chacun des examples afin de les alignés avec les changement d’API apporté par la version 0.2.0.

Compatibilité avec Node.js < 0.8.x

Il s’agit d’un bug introduit lors de la mise à jour 0.2.0 et de la migration vers Node.js en version 0.8. la fonction path.exists est renommée fs.exists. La correction fut simple et consiste à créer une fonction fs.exists si celle-ci n’existe pas. Voici un extrait du code source :

1
2
3
fs = require 'fs'
path = require 'path'
fs.exists ?= path.exists

Et même plus…

D’autres améliorations telles que rapportées par le fichier de changements sont :

  • Transmettre les options dans les fonctions from and to
  • La fonction to.string reçoit le nombre d’éléments écrits
  • Correction de from.array en association avec l’option “column”
  • Intégration avec Travis
  • Plus de documentation, particulièrement au sujet des colonnes et des transformations

Comments

Fork me on GitHub