Buckets:
| const stringWidth = require('string-width') | |
| function ansiAlign (text, opts) { | |
| if (!text) return text | |
| opts = opts || {} | |
| const align = opts.align || 'center' | |
| // short-circuit `align: 'left'` as no-op | |
| if (align === 'left') return text | |
| const split = opts.split || '\n' | |
| const pad = opts.pad || ' ' | |
| const widthDiffFn = align !== 'right' ? halfDiff : fullDiff | |
| let returnString = false | |
| if (!Array.isArray(text)) { | |
| returnString = true | |
| text = String(text).split(split) | |
| } | |
| let width | |
| let maxWidth = 0 | |
| text = text.map(function (str) { | |
| str = String(str) | |
| width = stringWidth(str) | |
| maxWidth = Math.max(width, maxWidth) | |
| return { | |
| str, | |
| width | |
| } | |
| }).map(function (obj) { | |
| return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str | |
| }) | |
| return returnString ? text.join(split) : text | |
| } | |
| ansiAlign.left = function left (text) { | |
| return ansiAlign(text, { align: 'left' }) | |
| } | |
| ansiAlign.center = function center (text) { | |
| return ansiAlign(text, { align: 'center' }) | |
| } | |
| ansiAlign.right = function right (text) { | |
| return ansiAlign(text, { align: 'right' }) | |
| } | |
| module.exports = ansiAlign | |
| function halfDiff (maxWidth, curWidth) { | |
| return Math.floor((maxWidth - curWidth) / 2) | |
| } | |
| function fullDiff (maxWidth, curWidth) { | |
| return maxWidth - curWidth | |
| } | |
Xet Storage Details
- Size:
- 1.33 kB
- Xet hash:
- 6eb204896c9f9cdb0e20bed4de8955b6356e38d92bcf172c741e8ecf1ff8ac87
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.