Skip to content

Commit

Permalink
Added examples
Browse files Browse the repository at this point in the history
  • Loading branch information
doug-martin committed Sep 3, 2014
1 parent 64b4fbe commit e697564
Show file tree
Hide file tree
Showing 21 changed files with 269 additions and 0 deletions.
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ benchmark
.travis.yml
Gruntfile.js
History.md
examples

5 changes: 5 additions & 0 deletions examples/assets/new_data_format.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
header,header2
value1a,value2a
value1b,value2b
value1c,value2c
value1d,value2d
5 changes: 5 additions & 0 deletions examples/assets/quote_all_columns.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
"header1","header2"
"value1a","value2a"
"value1a","value2a"
"value1a","value2a"
"value1a","value2a"
5 changes: 5 additions & 0 deletions examples/assets/quote_columns_and_headers_with_arrays.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
header1,"header2"
"value1a",value2a
"value1b",value2b
"value1c",value2c
"value1d",value2d
5 changes: 5 additions & 0 deletions examples/assets/quote_columns_not_headers.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
header1,header2
"value1a","value2a"
"value1a","value2a"
"value1a","value2a"
"value1a","value2a"
5 changes: 5 additions & 0 deletions examples/assets/quote_some_columns.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
"header1",header2
"value1a",value2a
"value1a",value2a
"value1a",value2a
"value1a",value2a
5 changes: 5 additions & 0 deletions examples/assets/quote_some_columns_and_headers.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
header1,"header2"
"value1a",value2a
"value1a",value2a
"value1a",value2a
"value1a",value2a
10 changes: 10 additions & 0 deletions examples/assets/snake_case_users.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
id,first_name,last_name,address
1,Bob,Yukon,1111 State St. Yukon AK
2,Sally,Yukon,1111 State St. Yukon AK
3,Bobby,Yukon,1111 State St. Yukon AK
4,Jane,Yukon,1111 State St. Yukon AK
5,Dick,Yukon,1111 State St. Yukon AK
6,John,Doe,1112 State St. Yukon AK
7,Jane,Doe,1113 State St. Yukon AK
8,Billy,Doe,1112 State St. Yukon AK
9,Edith,Doe,1112 State St. Yukon AK
10 changes: 10 additions & 0 deletions examples/assets/userRecords.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
id,firstName,lastName,address,isVerified,hasLoggedIn,age
1,Bob,Yukon,1111 State St. Yukon AK,false,false,11
2,Sally,Yukon,1111 State St. Yukon AK,true,false,12
3,Bobby,Yukon,1111 State St. Yukon AK,false,false,13
4,Jane,Yukon,1111 State St. Yukon AK,true,true,14
5,Dick,Yukon,1111 State St. Yukon AK,false,false,15
6,John,Doe,1112 State St. Yukon AK,true,false,16
7,Jane,Doe,1113 State St. Yukon AK,false,false,17
8,Billy,Doe,1112 State St. Yukon AK,true,true,18
9,Edith,Doe,1112 State St. Yukon AK,false,false,19
15 changes: 15 additions & 0 deletions examples/hash_array_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var csv = require("../"),
fs = require("fs"),
path = require("path"),
csvStream = csv.format({headers: true});

csvStream
.pipe(fs.createWriteStream(path.resolve("./assets", "new_data_format.csv")))
.on("end", process.exit);

csvStream.write([["header", "value1a"], ["header2", "value2a"]]);
csvStream.write([["header", "value1b"], ["header2", "value2b"]]);
csvStream.write([["header", "value1c"], ["header2", "value2c"]]);
csvStream.write([["header", "value1d"], ["header2", "value2d"]]);
csvStream.end();

14 changes: 14 additions & 0 deletions examples/models/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
function User(id) {
this.id = id;
this.isVerified = (id % 2) === 0;
this.hasLoggedIn = this.isVerified ? (id % 4) === 0 : false;
this.age = +(id) + 10;
}

User.findById = function (id, cb) {
setImmediate(function () {
cb(void 0, new User(id));
});
};

module.exports = User;
15 changes: 15 additions & 0 deletions examples/quote_all_columns_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var csv = require("../"),
fs = require("fs"),
path = require("path"),
csvStream = csv.format({headers: true, quoteColumns: true});

csvStream
.pipe(fs.createWriteStream(path.resolve("./assets", "quote_all_columns.csv")))
.on("end", process.exit);

csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.end();

16 changes: 16 additions & 0 deletions examples/quote_columns_and_headers_with_arrays_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
var csv = require("../"),
fs = require("fs"),
path = require("path"),
csvStream = csv.format({headers: true, quoteColumns: [true], quoteHeaders: [false, true]});

csvStream
.pipe(fs.createWriteStream(path.resolve("./assets", "quote_columns_and_headers_with_arrays.csv")))
.on("end", process.exit);

csvStream.write(["header1", "header2"])
csvStream.write(["value1a", "value2a"])
csvStream.write(["value1b", "value2b"])
csvStream.write(["value1c", "value2c"])
csvStream.write(["value1d", "value2d"])
csvStream.end();

15 changes: 15 additions & 0 deletions examples/quote_columns_not_headers_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var csv = require("../"),
fs = require("fs"),
path = require("path"),
csvStream = csv.format({headers: true, quoteColumns: true, quoteHeaders: false});

csvStream
.pipe(fs.createWriteStream(path.resolve("./assets", "quote_columns_not_headers.csv")))
.on("end", process.exit);

csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.end();

15 changes: 15 additions & 0 deletions examples/quote_some_columns_and_headers_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var csv = require("../"),
fs = require("fs"),
path = require("path"),
csvStream = csv.format({headers: true, quoteColumns: {header1: true}, quoteHeaders: {header2: true}});

csvStream
.pipe(fs.createWriteStream(path.resolve("./assets", "quote_some_columns_and_headers.csv")))
.on("end", process.exit);

csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.end();

15 changes: 15 additions & 0 deletions examples/quote_some_columns_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var csv = require("../"),
fs = require("fs"),
path = require("path"),
csvStream = csv.format({headers: true, quoteColumns: {header1: true}});

csvStream
.pipe(fs.createWriteStream(path.resolve("./assets", "quote_some_columns.csv")))
.on("end", process.exit);

csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.write({header1: "value1a", header2: "value2a"});
csvStream.end();

23 changes: 23 additions & 0 deletions examples/transform_async_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
var csv = require("../"),
User = require("./models/user"),
fs = require("fs"),
path = require("path");

var stream = fs.createReadStream(path.resolve("./assets", "snake_case_users.csv"))
.pipe(csv.parse({headers: true}))
.transform(function (row, next) {
User.findById(row.id, function (err, user) {
if (err) {
next(err);
} else {
next(void 0, {user: user, row: row});
}
});
})
.on("readable", function () {
var row;
while (null !== (row = stream.read())) {
console.log(row);
}
})
.on("end", process.exit);
30 changes: 30 additions & 0 deletions examples/transform_async_write_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
var csv = require("../"),
User = require("./models/user"),
fs = require("fs"),
path = require("path");

fs.createReadStream(path.resolve("./assets", "snake_case_users.csv"))
.pipe(csv.parse({headers: true}))
//pipe the parsed input into a csv formatter
.pipe(csv.format({headers: true}))
//Using the transfrom function from the formatting stream
.transform(function(row, next){
User.findById(row.id, function(err, user){
if(err){
next(err);
}else{
next(void 0, {
id: row.id,
firstName: row["first_name"],
lastName: row["last_name"],
address: row.address,
//properties from user
isVerified: user.isVerified,
hasLoggedIn: user.hasLoggedIn,
age: user.age
});
}
});
})
.pipe(fs.createWriteStream(path.resolve("./assets", "userRecords.csv")))
.on("end", process.exit);
21 changes: 21 additions & 0 deletions examples/transform_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
var csv = require("../"),
fs = require("fs"),
path = require("path");

var stream = fs.createReadStream(path.resolve("./assets", "snake_case_users.csv"))
.pipe(csv.parse({headers: true}))
.transform(function (row) {
return {
id: row.id,
firstName: row["first_name"],
lastName: row["last_name"],
address: row.address
};
})
.on("readable", function () {
var row;
while (null !== (row = stream.read())) {
console.log(row);
}
})
.on("end", process.exit);
23 changes: 23 additions & 0 deletions examples/validate_async_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
var csv = require("../"),
User = require("./models/user"),
fs = require("fs"),
path = require("path");

var stream = fs.createReadStream(path.resolve("./assets", "snake_case_users.csv"))
.pipe(csv.parse({headers: true}))
.validate(function (row, next) {
User.findById(row.id, function (err, user) {
if (err) {
next(err);
} else {
next(void 0, user.isVerified);
}
});
})
.on("readable", function () {
var row;
while (null !== (row = stream.read())) {
console.log(row);
}
})
.on("end", process.exit);
16 changes: 16 additions & 0 deletions examples/validate_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
var csv = require("../"),
fs = require("fs"),
path = require("path");

var stream = fs.createReadStream(path.resolve("./assets", "snake_case_users.csv"))
.pipe(csv.parse({headers: true}))
.validate(function (row) {
return (row.id % 2) === 0;
})
.on("readable", function () {
var row;
while (null !== (row = stream.read())) {
console.log(row);
}
})
.on("end", process.exit);

0 comments on commit e697564

Please sign in to comment.