Skip to content

Commit

Permalink
Beautify with js-beautify.
Browse files Browse the repository at this point in the history
Update Makefile to support format
Update README.md to add information about format json2csv
  • Loading branch information
Song committed Nov 9, 2013
1 parent 832f16d commit d95c3b7
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 18 deletions.
5 changes: 4 additions & 1 deletion Makefile
@@ -1,4 +1,7 @@
test:
./node_modules/.bin/mocha --reporter spec

format:
js-beautify lib/json2csv.js -r --config js-beautify.json

.PHONY: test
.PHONY: test
15 changes: 15 additions & 0 deletions README.md
Expand Up @@ -258,6 +258,21 @@ or
```bash
$ npm test
```

## Formatting json2csv

Requires js-beautify (npm -g install js-beautify).

Run

```bash
$ make format
```
## Contributors

Could you please make sure code is formatted and test passed before submit Pull Requests?

See Testing and Formatting json2csv above.

## But I want streams!

Expand Down
33 changes: 16 additions & 17 deletions lib/json2csv.js
@@ -1,4 +1,3 @@

/**
* Module dependencies.
*/
Expand Down Expand Up @@ -34,43 +33,43 @@ module.exports = function(params, callback) {
*/
var typeOf = function(obj) {
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}

/**
* Check passing params
*
* @param {Object} params Function parameters containing data, fields,
* delimiter and hasCSVColumnTitle
* delimiter and hasCSVColumnTitle
* @param {Function} callback Callback function returning error when invalid field is found
*/
var checkParams = function(params, callback) {
//#check params.data
params.data = JSON.parse(JSON.stringify(params.data));

// if data is an Object, not in array [{}], then just create 1 item array.
// So from now all data in array of object format.
if(typeOf(params.data) != 'array'){
var ar = new Array();
ar[0]=params.data;
params.data = ar;
}
if (typeOf(params.data) != 'array') {
var ar = new Array();
ar[0] = params.data;
params.data = ar;
}

//#check fieldNames
if (params.fieldNames && params.fieldNames.length !== params.fields.length) {
callback(new Error('fieldNames and fields should be of the same length, if fieldNames is provided.'));
}

params.fieldNames = params.fieldNames || params.fields;

//#check delimiter
params.del = params.del || ',';

//#check hasCSVColumnTitle, if it is not explicitly set to false then true.
if(params.hasCSVColumnTitle !== false){
if (params.hasCSVColumnTitle !== false) {
params.hasCSVColumnTitle = true;
}
callback(null);
callback(null);
};

/**
Expand All @@ -83,7 +82,7 @@ var createColumnTitles = function(params, callback) {
var str = '';

//if CSV has column title, then create it
if(params.hasCSVColumnTitle) {
if (params.hasCSVColumnTitle) {
params.fieldNames.forEach(function(element) {
if (str !== '') {
str += params.del;
Expand All @@ -104,7 +103,7 @@ var createColumnTitles = function(params, callback) {
var createColumnContent = function(params, str, callback) {
params.data.forEach(function(data_element) {
//if null or empty object do nothing
if(data_element && Object.getOwnPropertyNames(data_element).length > 0 ) {
if (data_element && Object.getOwnPropertyNames(data_element).length > 0) {
var line = '';
var eol = os.EOL || '\n';
params.fields.forEach(function(field_element) {
Expand All @@ -120,4 +119,4 @@ var createColumnContent = function(params, str, callback) {
}
});
callback(str);
};
};

0 comments on commit d95c3b7

Please sign in to comment.