gauge-ts
Version:
Typescript runner for Gauge
69 lines (68 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Table = void 0;
const TableRow_1 = require("./TableRow");
class Table {
_headers;
_tableRows;
_rows;
static from(table) {
if (!table.getHeaders()) {
throw new Error("Invalid table passed");
}
const header = table.getHeaders();
const gaugeTable = new Table(header?.getCellsList() ?? []);
for (const row of table.getRowsList()) {
gaugeTable.addRow(row.getCellsList());
}
return gaugeTable;
}
constructor(headers) {
this._headers = headers;
this._rows = new Array();
this._tableRows = new Array();
}
/**
* @deprecated Use getTableRows() instead.
* @public
*/
get rows() {
console.warn(".rows accessor is deprecated. Use .getTableRows() instead.");
return this._tableRows;
}
addRow(row) {
if (row.length !== this._headers.length) {
throw new Error(`Row size mismatch. Expected row size: ${this._headers.length}.` +
`Obtained row size: ${row.length}.`);
}
this._rows.push(row);
const tableRow = new TableRow_1.TableRow();
for (const header of this._headers) {
tableRow.addCell(header, row[this._headers.indexOf(header)]);
}
this._tableRows.push(tableRow);
}
getColumnNames() {
return this._headers;
}
getColumnName(index) {
if (index < 0 || index >= this._headers.length) {
throw new Error(`Column with index ${index} not found. Actual column size: ${this._headers.length}.`);
}
return this._headers[index];
}
getTableRows() {
return this._tableRows;
}
getColumnValues(columnName) {
const i = this._headers.indexOf(columnName);
return this.getColumnValuesForIndex(i);
}
getColumnValuesForIndex(index) {
if (index >= 0) {
return this._rows.map((row) => row[index]);
}
return [];
}
}
exports.Table = Table;