blob: 0b02911a4bf7522d080703e85106b917677b2e0b [file] [log] [blame]
export enum Align {
Left = ':---',
Center = ':---:',
Right = '---:',
None = '---'
}
export const Icon = {
skip: '✖️', // ':heavy_multiplication_x:'
success: '✔️', // ':heavy_check_mark:'
fail: '❌' // ':x:'
}
export function link(title: string, address: string): string {
return `[${title}](${address})`
}
type ToString = string | number | boolean | Date
export function table(headers: ToString[], align: ToString[], ...rows: ToString[][]): string {
const headerRow = `|${headers.map(tableEscape).join('|')}|`
const alignRow = `|${align.join('|')}|`
const contentRows = rows.map(row => `|${row.map(tableEscape).join('|')}|`).join('\n')
return [headerRow, alignRow, contentRows].join('\n')
}
export function tableEscape(content: ToString): string {
return content.toString().replace('|', '\\|')
}
export function fixEol(text?: string): string {
return text?.replace(/\r/g, '') ?? ''
}
export function ellipsis(text: string, maxLength: number): string {
if (text.length <= maxLength) {
return text
}
return text.substr(0, maxLength - 3) + '...'
}
export function formatTime(ms: number): string {
if (ms > 1000) {
return `${Math.round(ms / 1000)}s`
}
return `${Math.round(ms)}ms`
}