type Column = { name: string nowrap?: boolean align?: string } type DataItem = string[] export class HTMLTable { data: DataItem[] columns: Column[] constructor(data: DataItem[], columns: Column[]) { this.data = data this.columns = columns } toString() { let output = '\n' output += ' \n ' for (const column of this.columns) { output += `` } output += '\n \n' output += ' \n' for (const item of this.data) { output += ' ' let i = 0 for (const prop in item) { const column = this.columns[i] const nowrap = column.nowrap ? ' nowrap' : '' const align = column.align ? ` align="${column.align}"` : '' output += `${item[prop]}` i++ } output += '\n' } output += ' \n' output += '
${column.name}
' return output } }