diff options
| author | Priyansh <[email protected]> | 2022-01-22 21:57:21 -0500 |
|---|---|---|
| committer | Priyansh <[email protected]> | 2022-01-22 21:57:21 -0500 |
| commit | 4700bb0fafd7c7b208168dda7425193bfe1eb4db (patch) | |
| tree | dcf053a8ba156f24ee2ea4e121f3d77be2c7294f /src | |
| parent | 5dfd3ad1f2fb4bbc0bf7b92ac93f59ccd78a7fc4 (diff) | |
| download | izuku.js-4700bb0fafd7c7b208168dda7425193bfe1eb4db.tar.xz izuku.js-4700bb0fafd7c7b208168dda7425193bfe1eb4db.zip | |
feat: function to readCSV
Diffstat (limited to 'src')
| -rw-r--r-- | src/index.ts | 3 | ||||
| -rw-r--r-- | src/lib/data.ts | 29 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/index.ts b/src/index.ts index 7d49ee5..6e7bfc8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,7 +8,7 @@ import { } from './lib/locate'; import { show, head, tail } from './lib/display'; import { getSize, info } from './lib/info'; -import { flatten, fromJSON } from './lib/data'; +import { flatten, fromJSON, fromCSV } from './lib/data'; import { isArrayOfType, range, flattenJSON } from './helpers/arrayFunctions'; class Izuku { @@ -62,6 +62,7 @@ class Izuku { return rangeIndex(this, index); }; public fromJSON = fromJSON; + public fromCSV = fromCSV; } class Frame extends Izuku { diff --git a/src/lib/data.ts b/src/lib/data.ts index 9649d6d..a89434b 100644 --- a/src/lib/data.ts +++ b/src/lib/data.ts @@ -1,5 +1,6 @@ import { Frame } from '../index'; import { isValidJSONObject } from '../helpers/arrayFunctions'; +import { readFileSync } from 'fs'; /** * flattenArray - flattens a 2D into a single array @@ -56,3 +57,31 @@ export function fromJSON(this: Frame, json: any): Frame { throw new Error('Invalid JSON'); } } + +/** + * fromCSV - converts a CSV string into a rowdata - framedata is a 2D array + * @param csv: the CSV string to be converted + * @returns the rowdata + */ +export function fromCSV(this: Frame, csvpath: string): Frame { + // read the csv file + const csv = readFileSync(csvpath, 'utf8'); + const rowdata: any[][] = []; + const rows: string[] = csv.split('\n'); + for (let i = 0; i < rows.length; i++) { + const row: string[] = rows[i].split(','); + rowdata.push(row); + } + this.rowdata = rowdata; + if (this.columns.length === 0) { + this.columns = rowdata[0]; + } + // remove the first row + this.rowdata.shift(); + + // if last row contains only empty values, remove it + if (this.rowdata[this.rowdata.length - 1].every((item) => item === '')) { + this.rowdata.pop(); + } + return this; +} |
