node/deps/npm/node_modules/wide-align/align.js
claudiahdz a7c7c703af
deps: upgrade npm to 6.13.1
PR-URL: https://github.com/nodejs/node/pull/30533
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2019-11-20 19:16:47 -05:00

66 lines
1.4 KiB
JavaScript

'use strict'
var stringWidth = require('string-width')
exports.center = alignCenter
exports.left = alignLeft
exports.right = alignRight
// lodash's way of generating pad characters.
function createPadding (width) {
var result = ''
var string = ' '
var n = width
do {
if (n % 2) {
result += string;
}
n = Math.floor(n / 2);
string += string;
} while (n);
return result;
}
function alignLeft (str, width) {
var trimmed = str.trimRight()
if (trimmed.length === 0 && str.length >= width) return str
var padding = ''
var strWidth = stringWidth(trimmed)
if (strWidth < width) {
padding = createPadding(width - strWidth)
}
return trimmed + padding
}
function alignRight (str, width) {
var trimmed = str.trimLeft()
if (trimmed.length === 0 && str.length >= width) return str
var padding = ''
var strWidth = stringWidth(trimmed)
if (strWidth < width) {
padding = createPadding(width - strWidth)
}
return padding + trimmed
}
function alignCenter (str, width) {
var trimmed = str.trim()
if (trimmed.length === 0 && str.length >= width) return str
var padLeft = ''
var padRight = ''
var strWidth = stringWidth(trimmed)
if (strWidth < width) {
var padLeftBy = parseInt((width - strWidth) / 2, 10)
padLeft = createPadding(padLeftBy)
padRight = createPadding(width - (strWidth + padLeftBy))
}
return padLeft + trimmed + padRight
}