Wrapper to of Deno encoding/csv to provide several possibilities of data manipulations.
easyCSV provide parse
function for the whole parser or each header. Therefore you can apply parsing function to the whole row or each column.
parse(csvString: string, opt: ParseOption): Promise<unknown[]>
: Parse the CSV string with the options provided.parseFile(filepath: string, opt: ParseOption): Promise<unknown[]>
: Open the csv file and parse the data with the options provided.
header: boolean | string[] | HeaderOption[];
: If a boolean is provided, the first line will be used as Header definitions. Ifstring[]
orHeaderOption[]
those names will be used for header definition.parse?: (input: unknown) => unknown;
: Parse function for the row, which will be executed after parsing of all columns. Therefore if you don't provide header and parse function with headers, input will bestring[]
.
name: string;
: Name of the header to be used as property.parse?: (input: string) => unknown;
: Parse function for the column. This is executed on each entry of the header. This can be combined with the Parse function of the rows.
// input:
// a,b,c
// e,f,g
const r = await parseFile(filepath, {
header: false
});
// output:
// [["a", "b", "c"], ["e", "f", "g"]]
const r = await parseFile(filepath, {
header: true
});
// output:
// [{ a: "e", b: "f", c: "g" }]
const r = await parseFile(filepath, {
header: ["this", "is", "sparta"]
});
// output:
// [
// { this: "a", is: "b", sparta: "c" },
// { this: "e", is: "f", sparta: "g" }
// ]
const r = await parseFile(filepath, {
header: [
{
name: "this",
parse: (e: string): string => {
return `b${e}$$`;
}
},
{
name: "is",
parse: (e: string): number => {
return e.length;
}
},
{
name: "sparta",
parse: (e: string): unknown => {
return { bim: `boom-${e}` };
}
}
]
});
// output:
// [
// { this: "ba$$", is: 1, sparta: { bim: `boom-c` } },
// { this: "be$$", is: 1, sparta: { bim: `boom-g` } }
// ]
const r = await parseFile(filepath, {
header: ["this", "is", "sparta"],
parse: (e: Record<string, unknown>) => {
return { super: e.this, street: e.is, fighter: e.sparta };
}
});
// output:
// [
// { super: "a", street: "b", fighter: "c" },
// { super: "e", street: "f", fighter: "g" }
// ]