diff options
| author | Priyansh <[email protected]> | 2022-01-19 01:56:04 -0500 |
|---|---|---|
| committer | Priyansh <[email protected]> | 2022-01-19 01:56:04 -0500 |
| commit | fbd2fa4fd9182429e54bfe96483961a98f10ac04 (patch) | |
| tree | acad8dbbe4b9c51609babc64918ee42a7c2c284b /src/lib | |
| parent | 80eabe37c21ae4965dbafbb9abb5c7a153b209c5 (diff) | |
| download | izuku.js-fbd2fa4fd9182429e54bfe96483961a98f10ac04.tar.xz izuku.js-fbd2fa4fd9182429e54bfe96483961a98f10ac04.zip | |
refactor: make package usable in npm
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/frame.ts | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/src/lib/frame.ts b/src/lib/frame.ts deleted file mode 100644 index dc93a2c..0000000 --- a/src/lib/frame.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { FrameInterface } from '../interface/frameInterface'; -import { Display } from './display'; - -export class Frame implements FrameInterface { - rowdata: unknown[][] = []; - columns!: string[]; - - constructor(rowdata?: Array<unknown[]>, header?: Array<string>) { - this.rowdata = rowdata || []; - this.columns = header || []; - } - /** - * data prints the data of the frame in console.table format. It also sets the new data to the frame if data is passed as a parameter - * @param rowdata: the rowdata to be sent to the frame - * @returns the current frame - */ - data(rowdata?: Array<unknown[]>): this | unknown[][] { - if (rowdata) { - this.rowdata = rowdata; - } else { - new Display().table(this); - return this; - } - - return this; - } - - /** - * header sets the names of the columns of the frame - * @param header: the header to be attached to the frame - * @returns the current frame - */ - header(header: Array<string>): this | Array<string> { - if (!this.rowdata.length) { - throw new Error('Set data before setting header'); - } else { - const passedHeaderLength = header.length; - const maxSizedArrayLength = this.rowdata.reduce((acc, curr) => { - return acc.length > curr.length ? acc : curr; - }).length; - if (passedHeaderLength !== maxSizedArrayLength) { - throw new Error('Header length does not match data length'); - } else { - this.columns = header; - return this; - } - } - } - - /** - * column returns a single column of the frame, option is either the column name or the column index - * @param column: the column to be returned - * @returns a single column of the frame - * @example - * const frame = new Izuku([ - * ['a', 'b', 'c'], - * ['d', 'e', 'f'], - * ['g', 'h', 'i'] - * ]); - * frame.setheader(['a', 'b', 'c']); - * console.log(frame.column('a')); - * // ['a', 'd', 'g'] - * console.log(frame.column(1)); - * // ['b', 'e', 'h'] - */ - public column(column: string | number): Array<unknown> { - if (typeof column === 'string') { - return this.rowdata.map((row) => row[this.columns.indexOf(column)]); - } - return this.rowdata.map((row) => row[column]); - } -} |
