module.exports = class TableKit { titles colWidth tableCharacter constructor(titles, colWidth=30, tableCharacter='#') { this.titles = titles this.colWidth = colWidth this.tableCharacter = tableCharacter this.splitLine = ''.padEnd((colWidth + 2) * this.titles.length + 1, this.tableCharacter) } printTitles() { const colWidth = 30 const padTitles = this.titles.map((title) => { return title.padEnd(colWidth, ' ') }) const titleLine = (() => { let titleLine = '' for (const padTitle of padTitles) { titleLine = titleLine.concat(this.tableCharacter).concat(' ').concat(padTitle) } return titleLine.concat(this.tableCharacter) })() console.clear() console.info(this.splitLine) console.info(titleLine) console.info(this.splitLine) } showLine(rows=[], fileLogger=undefined) { const padRows = rows.map((col) => { return col.padEnd(this.colWidth, ' ') }) const infoLine = (() => { let infoLine = '' for (const padRow of padRows) { infoLine = infoLine.concat(this.tableCharacter).concat(' ').concat(padRow) } return infoLine.concat(this.tableCharacter) })() console.info(infoLine) if (fileLogger) fileLogger.info(infoLine) } printEndLine(logger=undefined) { console.info(this.splitLine) if (logger) logger.info('') } }