csv-writer
Advanced tools
Comparing version 1.0.1 to 1.1.0
@@ -8,2 +8,7 @@ # Changelog | ||
## [1.1.0] - 2018-08-20 | ||
### Added | ||
- Allow semicolon as a field delimiter as it is commonly used in CSV in some regions. Thanks to @HKskn. | ||
[PR #8](https://github.com/ryu1kn/csv-writer/pull/8), [#6](https://github.com/ryu1kn/csv-writer/pull/6) | ||
## [1.0.1] - 2018-08-09 | ||
@@ -10,0 +15,0 @@ ### Fixed |
@@ -8,7 +8,13 @@ | ||
const DEFAULT_FIELD_DELIMITER = ','; | ||
const VALID_FIELD_DELIMITERS = [DEFAULT_FIELD_DELIMITER, ';']; | ||
class CsvStringifierFactory { | ||
createArrayCsvStringifier(params) { | ||
const fieldDelimiter = params.fieldDelimiter || DEFAULT_FIELD_DELIMITER; | ||
_validateFieldDelimiter(fieldDelimiter); | ||
return new ArrayCsvStringifier({ | ||
fieldStringifier: new FieldStringifier(), | ||
fieldStringifier: new FieldStringifier({fieldDelimiter}), | ||
fieldDelimiter, | ||
header: params.header | ||
@@ -19,4 +25,7 @@ }); | ||
createObjectCsvStringifier(params) { | ||
const fieldDelimiter = params.fieldDelimiter || DEFAULT_FIELD_DELIMITER; | ||
_validateFieldDelimiter(fieldDelimiter); | ||
return new ObjectCsvStringifier({ | ||
fieldStringifier: new FieldStringifier(), | ||
fieldStringifier: new FieldStringifier({fieldDelimiter}), | ||
fieldDelimiter, | ||
header: params.header | ||
@@ -28,2 +37,8 @@ }); | ||
function _validateFieldDelimiter(delimiter) { | ||
if (VALID_FIELD_DELIMITERS.indexOf(delimiter) === -1) { | ||
throw new Error(`Invalid field delimiter \`${delimiter}\` is specified`); | ||
} | ||
} | ||
module.exports = CsvStringifierFactory; |
'use strict'; | ||
const FIELD_DELIMITER = ','; | ||
const RECORD_DELIMITER = '\n'; | ||
@@ -11,2 +10,3 @@ | ||
this._fieldStringifier = params.fieldStringifier; | ||
this._fieldDelimiter = params.fieldDelimiter; | ||
} | ||
@@ -37,3 +37,3 @@ | ||
.map(fieldValue => this._fieldStringifier.stringify(fieldValue)) | ||
.join(FIELD_DELIMITER); | ||
.join(this._fieldDelimiter); | ||
} | ||
@@ -40,0 +40,0 @@ |
@@ -9,3 +9,6 @@ | ||
constructor(params) { | ||
super({fieldStringifier: params.fieldStringifier}); | ||
super({ | ||
fieldStringifier: params.fieldStringifier, | ||
fieldDelimiter: params.fieldDelimiter | ||
}); | ||
this._header = params.header; | ||
@@ -12,0 +15,0 @@ } |
@@ -9,3 +9,6 @@ | ||
constructor(params) { | ||
super({fieldStringifier: params.fieldStringifier}); | ||
super({ | ||
fieldStringifier: params.fieldStringifier, | ||
fieldDelimiter: params.fieldDelimiter | ||
}); | ||
this._header = params.header; | ||
@@ -12,0 +15,0 @@ } |
@@ -15,3 +15,4 @@ | ||
const csvStringifier = this._csvStringifierFactory.createArrayCsvStringifier({ | ||
header: params.header | ||
header: params.header, | ||
fieldDelimiter: params.fieldDelimiter | ||
}); | ||
@@ -29,3 +30,4 @@ return new CsvWriter({ | ||
const csvStringifier = this._csvStringifierFactory.createObjectCsvStringifier({ | ||
header: params.header | ||
header: params.header, | ||
fieldDelimiter: params.fieldDelimiter | ||
}); | ||
@@ -32,0 +34,0 @@ return new CsvWriter({ |
@@ -6,2 +6,6 @@ | ||
constructor(params) { | ||
this._fieldDelimiter = params.fieldDelimiter; | ||
} | ||
stringify(value) { | ||
@@ -14,3 +18,3 @@ if (typeof value === 'undefined' || value === null) return ''; | ||
_needsQuote(str) { | ||
return str.includes(',') || str.includes('\n') || str.includes('"'); | ||
return str.includes(this._fieldDelimiter) || str.includes('\n') || str.includes('"'); | ||
} | ||
@@ -17,0 +21,0 @@ |
{ | ||
"name": "csv-writer", | ||
"version": "1.0.1", | ||
"version": "1.1.0", | ||
"description": "Convert objects/arrays into a CSV string or write them into a CSV file", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "mocha test/bootstrap.js test/lib --recursive", | ||
"test": "npm run test:unit && npm run test:it", | ||
"pretest:unit": "rm -rf test-tmp && mkdir test-tmp", | ||
"test:unit": "mocha test/unit --recursive", | ||
"test:it": "test/integration/test.sh", | ||
"coverage": "nyc npm test", | ||
"coverage": "nyc npm run test:unit", | ||
"lint": "eslint ." | ||
@@ -28,3 +30,2 @@ }, | ||
"devDependencies": { | ||
"chai": "^4.1.2", | ||
"codeclimate-test-reporter": "^0.5.0", | ||
@@ -35,5 +36,4 @@ "coveralls": "^3.0.0", | ||
"mocha": "^5.0.1", | ||
"nyc": "^11.4.1", | ||
"sinon": "^4.4.2" | ||
"nyc": "^11.4.1" | ||
} | ||
} |
@@ -8,2 +8,3 @@ [![Build Status](https://travis-ci.org/ryu1kn/csv-writer.svg?branch=master)](https://travis-ci.org/ryu1kn/csv-writer) | ||
Convert objects/arrays into a CSV string or write them into a file. | ||
It respects [RFC 4180](https://tools.ietf.org/html/rfc4180) for the output CSV format. | ||
@@ -137,2 +138,6 @@ ## Prerequisite | ||
* fieldDelimiter `<string>` (optional) | ||
Default: `,`. Only either comma `,` or semicolon `;` is allowed. | ||
* encoding `<string>` (optional) | ||
@@ -167,2 +172,6 @@ | ||
* fieldDelimiter `<string>` (optional) | ||
Default: `,`. Only either comma `,` or semicolon `;` is allowed. | ||
* encoding `<string>` (optional) | ||
@@ -207,2 +216,6 @@ | ||
* fieldDelimiter `<string>` (optional) | ||
Default: `,`. Only either comma `,` or semicolon `;` is allowed. | ||
##### Returns: | ||
@@ -237,2 +250,6 @@ | ||
* fieldDelimiter `<string>` (optional) | ||
Default: `,`. Only either comma `,` or semicolon `;` is allowed. | ||
##### Returns: | ||
@@ -239,0 +256,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
33584
6
19
614
269
4
1