csv-writer
Version:
Convert objects/arrays into a CSV string or write them into a CSV file
50 lines (44 loc) • 1.68 kB
text/typescript
import {CsvWriter} from './csv-writer';
import {CsvStringifierFactory} from './csv-stringifier-factory';
import {ObjectStringifierHeader} from './record';
export interface ArrayCsvWriterParams {
path: string;
header?: string[];
fieldDelimiter?: string;
recordDelimiter?: string;
alwaysQuote?: boolean;
encoding?: string;
append?: boolean;
}
export interface ObjectCsvWriterParams {
path: string;
header: ObjectStringifierHeader;
fieldDelimiter?: string;
recordDelimiter?: string;
headerIdDelimiter?: string;
alwaysQuote?: boolean;
encoding?: string;
append?: boolean;
}
export class CsvWriterFactory {
constructor(private readonly csvStringifierFactory: CsvStringifierFactory) {}
createArrayCsvWriter(params: ArrayCsvWriterParams) {
const csvStringifier = this.csvStringifierFactory.createArrayCsvStringifier({
header: params.header,
fieldDelimiter: params.fieldDelimiter,
recordDelimiter: params.recordDelimiter,
alwaysQuote: params.alwaysQuote
});
return new CsvWriter(csvStringifier, params.path, params.encoding, params.append);
}
createObjectCsvWriter(params: ObjectCsvWriterParams) {
const csvStringifier = this.csvStringifierFactory.createObjectCsvStringifier({
header: params.header,
fieldDelimiter: params.fieldDelimiter,
recordDelimiter: params.recordDelimiter,
headerIdDelimiter: params.headerIdDelimiter,
alwaysQuote: params.alwaysQuote
});
return new CsvWriter(csvStringifier, params.path, params.encoding, params.append);
}
}