-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathascii-data-table.js.map
1 lines (1 loc) · 9.79 KB
/
ascii-data-table.js.map
1
{"version":3,"sources":["../src/ascii-data-table.js"],"names":["R","len","val","length","arrLen","arr","arrMax","apply","Math","max","matrixCol","matrix","colNr","pluck","padString","character","width","spacePad","stringifyArray","cMap","JSON","stringify","stringifyRows","rows","EitherArray","fold","insertColSeparators","join","getSeparatorLine","horChar","leftChar","crossChar","rightChar","colWidths","concat","map","w","topSeparatorLine","thickSeparatorLine","thinSeparatorLine","bottomSeparatorLine","maxWidth","minWidth","input","inputEither","columnAtIndex","normalizeWidth","min","Infinity","r","head","array","id","rowHeights","row","maxLen","numLines","ceil","rowsToLines","heights","widths","columnToLinesWidths","columnToLines","i","rowHeight","col","colIndex","lines","splitEvery","last","push","createLines","reduce","Array","isArray","tRow","transpose","main","maxColWidth","minColWidth","parseInt","norm","header","separated","intersperse","tail","serializeData","tableFromSerializedData","serializedRows","maxColumnWidth","table"],"mappings":"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","file":"ascii-data-table.js","sourcesContent":["import * as R from './functions'\nimport repeat from 'core-js/library/fn/string/repeat'\n\nconst len = (val) => typeof val === 'undefined' ? 0 : ('' + val).length\nconst arrLen = (arr) => arr.length\nconst arrMax = (arr) => R.apply(Math.max, arr)\nconst matrixCol = (matrix) => (colNr) => R.pluck(colNr, matrix)\nconst padString = (character) => (width) => !width ? '' : repeat(character, width)\nconst spacePad = padString(' ')\nconst stringifyArray = R.cMap(JSON.stringify)\nconst stringifyRows = (rows) => R.EitherArray(rows).fold(() => null, R.cMap(stringifyArray))\nconst insertColSeparators = (arr) => '│' + arr.join('│') + '│'\nconst getSeparatorLine = (horChar, leftChar, crossChar, rightChar) => (colWidths) => {\n return R.concat(leftChar, colWidths.map((w) => padString(horChar)(w)).join(crossChar), rightChar)\n}\nconst topSeparatorLine = getSeparatorLine('═', '╒', '╤', '╕')\nconst thickSeparatorLine = getSeparatorLine('═', '╞', '╪', '╡')\nconst thinSeparatorLine = getSeparatorLine('─', '├', '┼', '┤')\nconst bottomSeparatorLine = getSeparatorLine('─', '└', '┴', '┘')\n\nconst colWidths = (maxWidth, minWidth, input) => {\n const inputEither = R.EitherArray(input)\n const columnAtIndex = matrixCol(input)\n const normalizeWidth = (w) => Math.min(Math.max(w, minWidth), (maxWidth || Infinity))\n return inputEither\n .map((r) => R.head(r)[0]) // Grab title row\n .map(arrLen) // Get the number of columns\n .map(R.array) // Create a new array with same number of columns\n .map(R.cMap(columnAtIndex)) // Populate new array with columns from input\n .map(R.cMap(R.cMap(len))) // Measure the width of every column of every row\n .map(R.cMap(arrMax)) // Grab the max width of every column\n .map(R.cMap(normalizeWidth)) // Normalize width to be within limits\n .fold(() => [0], R.id) // default to 0\n}\n\nconst rowHeights = (maxWidth, input) => {\n return input.map((row) => {\n const maxLen = arrMax(row.map(len))\n const numLines = Math.ceil(maxLen / maxWidth)\n return numLines\n })\n}\n\nconst rowsToLines = (maxWidth, heights, widths, input) => {\n const columnToLinesWidths = columnToLines(widths, maxWidth)\n return input.map((row, i) => {\n return row.map(columnToLinesWidths(heights[i]))\n })\n}\n\nconst columnToLines = (widths, maxWidth) => (rowHeight) => (col, colIndex) => {\n let lines = R.splitEvery(maxWidth, col)\n lines[lines.length - 1] += spacePad(widths[colIndex] - len(R.last(lines)))\n while (lines.length < rowHeight) {\n lines.push(spacePad(widths[colIndex]))\n }\n return lines\n}\n\nconst createLines = (rows) => {\n return rows.reduce((lines, row) => {\n if (!Array.isArray(row)) {\n return [].concat(lines, row)\n }\n const tRow = R.transpose(row).map(insertColSeparators)\n return [].concat(lines, tRow)\n }, [])\n}\n\nconst main = (rows, maxColWidth = 30, minColWidth = 3) => {\n if (!Array.isArray(rows) || !rows.length) {\n return ''\n }\n maxColWidth = parseInt(maxColWidth)\n const widths = colWidths(maxColWidth, minColWidth, rows)\n const heights = rowHeights(maxColWidth, rows)\n const norm = rowsToLines(maxColWidth, heights, widths, rows)\n const header = createLines(R.head(norm))\n const separated = R.intersperse(thinSeparatorLine(widths), R.tail(norm))\n const lines = createLines(separated)\n return [\n topSeparatorLine(widths),\n ...header,\n thickSeparatorLine(widths),\n ...lines,\n bottomSeparatorLine(widths)\n ].join('\\n')\n}\n\nexport default {\n serializeData: (rows) => stringifyRows(rows),\n tableFromSerializedData: (serializedRows, maxColumnWidth = 30) => main(serializedRows, maxColumnWidth),\n table: (rows, maxColumnWidth = 30) => main(stringifyRows(rows), maxColumnWidth),\n maxColumnWidth: (rows) => arrMax(colWidths(0, 0, stringifyRows(rows)))\n}\n"]}