Skip to content

Commit

Permalink
Fix #19. Newline-delimited JSON output.
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Sep 9, 2016
1 parent 77bcad2 commit b1ccf01
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 8 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,3 +228,5 @@ csv2json < file.csv > file.json
csv2json - < file.csv > file.json
cat file.csv | csv2json - > file.json
```

Use --help for more.
18 changes: 16 additions & 2 deletions bin/csv2json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,25 @@

var os = require("os"),
rw = require("rw").dash,
iconv = require("iconv-lite"),
commander = require("commander"),
dsv = require("../");

rw.readFile(process.argv[2] || "-", "utf8", function(error, text) {
commander
.version(require("../package.json").version)
.usage("[options] [file]")
.option("-o, --out <file>", "output file name; defaults to “-” for stdout", "-")
.option("-n, --newline-delimited", "output newline-delimited JSON")
.option("--input-encoding <encoding>", "input character encoding; defaults to “utf8”", "utf8")
.option("--output-encoding <encoding>", "output character encoding; defaults to “utf8”", "utf8")
.parse(process.argv);

rw.readFile(commander.args[0] || "-", function(error, text) {
if (error) throw error;
rw.writeFile("-", JSON.stringify(dsv.csvParse(text)) + os.EOL, "utf8", function(error) {
var rows = dsv.csvParse(iconv.decode(text, commander.inputEncoding));
rw.writeFile(commander.out, iconv.encode(commander.newlineDelimited
? rows.map(function(row) { return JSON.stringify(row); }).join("\n") + "\n"
: JSON.stringify(rows) + os.EOL, commander.outputEncoding), function(error) {
if (error) throw error;
});
});
14 changes: 12 additions & 2 deletions bin/csv2tsv
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,21 @@

var os = require("os"),
rw = require("rw").dash,
iconv = require("iconv-lite"),
commander = require("commander"),
dsv = require("../");

rw.readFile(process.argv[2] || "-", "utf8", function(error, text) {
commander
.version(require("../package.json").version)
.usage("[options] [file]")
.option("-o, --out <file>", "output file name; defaults to “-” for stdout", "-")
.option("--input-encoding <encoding>", "input character encoding; defaults to “utf8”", "utf8")
.option("--output-encoding <encoding>", "output character encoding; defaults to “utf8”", "utf8")
.parse(process.argv);

rw.readFile(commander.args[0] || "-", function(error, text) {
if (error) throw error;
rw.writeFile("-", dsv.tsvFormat(dsv.csvParse(text)) + os.EOL, "utf8", function(error) {
rw.writeFile("-", iconv.encode(dsv.tsvFormat(dsv.csvParse(iconv.decode(text, commander.inputEncoding))) + os.EOL, commander.outputEncoding), function(error) {
if (error) throw error;
});
});
14 changes: 12 additions & 2 deletions bin/tsv2csv
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,21 @@

var os = require("os"),
rw = require("rw").dash,
iconv = require("iconv-lite"),
commander = require("commander"),
dsv = require("../");

rw.readFile(process.argv[2] || "-", "utf8", function(error, text) {
commander
.version(require("../package.json").version)
.usage("[options] [file]")
.option("-o, --out <file>", "output file name; defaults to “-” for stdout", "-")
.option("--input-encoding <encoding>", "input character encoding; defaults to “utf8”", "utf8")
.option("--output-encoding <encoding>", "output character encoding; defaults to “utf8”", "utf8")
.parse(process.argv);

rw.readFile(commander.args[0] || "-", function(error, text) {
if (error) throw error;
rw.writeFile("-", dsv.csvFormat(dsv.tsvParse(text)) + os.EOL, "utf8", function(error) {
rw.writeFile("-", iconv.encode(dsv.csvFormat(dsv.tsvParse(iconv.decode(text, commander.inputEncoding))) + os.EOL, commander.outputEncoding), function(error) {
if (error) throw error;
});
});
18 changes: 16 additions & 2 deletions bin/tsv2json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,25 @@

var os = require("os"),
rw = require("rw").dash,
iconv = require("iconv-lite"),
commander = require("commander"),
dsv = require("../");

rw.readFile(process.argv[2] || "-", "utf8", function(error, text) {
commander
.version(require("../package.json").version)
.usage("[options] [file]")
.option("-o, --out <file>", "output file name; defaults to “-” for stdout", "-")
.option("-n, --newline-delimited", "output newline-delimited JSON")
.option("--input-encoding <encoding>", "input character encoding; defaults to “utf8”", "utf8")
.option("--output-encoding <encoding>", "output character encoding; defaults to “utf8”", "utf8")
.parse(process.argv);

rw.readFile(commander.args[0] || "-", function(error, text) {
if (error) throw error;
rw.writeFile("-", JSON.stringify(dsv.tsvParse(text)) + os.EOL, "utf8", function(error) {
var rows = dsv.tsvParse(iconv.decode(text, commander.inputEncoding));
rw.writeFile(commander.out, iconv.encode(commander.newlineDelimited
? rows.map(function(row) { return JSON.stringify(row); }).join("\n") + "\n"
: JSON.stringify(rows) + os.EOL, commander.outputEncoding), function(error) {
if (error) throw error;
});
});
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
"postpublish": "VERSION=`node -e 'console.log(require(\"./package.json\").version)'`; git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3-dsv/build/d3-dsv.js d3-dsv.v1.js && cp ../d3-dsv/build/d3-dsv.min.js d3-dsv.v1.min.js && git add d3-dsv.v1.js d3-dsv.v1.min.js && git commit -m \"d3-dsv ${VERSION}\" && git push && cd - && zip -j build/d3-dsv.zip -- LICENSE README.md build/d3-dsv.js build/d3-dsv.min.js"
},
"dependencies": {
"commander": "2",
"iconv-lite": "0.4",
"rw": "1"
},
"devDependencies": {
Expand Down

0 comments on commit b1ccf01

Please sign in to comment.