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 = '\r\n' output += ' \r\n ' for (const column of this.columns) { output += `` } output += '\r\n \r\n' output += ' \r\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 += '\r\n' } output += ' \r\n' output += '
${column.name}
' return output } }