parse a CSV row string (in node.js)
JavaScript
Switch branches/tags
Nothing to show
Permalink
Failed to load latest commit information.
lib bump to next ver for future work Aug 17, 2012
test get test suite working, add tests for normalize and stringify Aug 17, 2012
tools first commit Aug 17, 2012
.gitignore
AUTHORS first commit Aug 17, 2012
CHANGES.md bump to next ver for future work Aug 17, 2012
Makefile get test suite working, add tests for normalize and stringify Aug 17, 2012
README.md usage info in readme Aug 17, 2012
package.json

README.md

This is a small node module for parsing individual CSV rows. This can be useful if you have, say, a user-provided string that is a "comma-separated" set of strings. Simply splitting on commas doesn't quite suffice.

It has been a little while, but when I last looked, existing node.js CSV modules didn't make it straightforward to just parse a single row of CSV data synchronously.

Follow @trentmick for updates to this module.

Installation

npm install csvrow

This is also a single node.js module (lib/csvrow.js) with no external deps, so you can alternatively just grab that file.

Usage

Typical parsing as you'd expect:

> var csvrow = require('csvrow');
> csvrow.parse('a,b,c')
[ 'a', 'b', 'c' ]
> csvrow.parse(' a, b,, d')
[ 'a', 'b', '', 'd' ]

And the reverse (stringifying):

> csvrow.stringify(['a', 'b', 'c'])
'a,b,c'
> csvrow.stringify(['a', 'space y', 'c'])
'a,"space y",c'

parse and stringify should always cycle to the same value, including with some weird edge cases. See the test suite and http://en.wikipedia.org/wiki/Comma-separated_values.

There is also a "normalize" function to get rid of spacing and empty columns:

> csvrow.normalize('a, b, , d')
'a,b,d'

Note: dropping empty entries might not be what you want. Patches welcome to make that optional.

Testing

npm test   # tests with first node version on the path

Versioning

The scheme I follow is most succintly described by the bootstrap guys here.

tl;dr: All versions are <major>.<minor>.<patch> which will be incremented for breaking backward compat and major reworks, new features without breaking change, and bug fixes, respectively.

License

MIT.