2 var stringWidth = require('string-width')
4 exports.center = alignCenter
5 exports.left = alignLeft
6 exports.right = alignRight
8 // lodash's way of generating pad characters.
10 function createPadding (width) {
18 n = Math.floor(n / 2);
25 function alignLeft (str, width) {
26 var trimmed = str.trimRight()
27 if (trimmed.length === 0 && str.length >= width) return str
29 var strWidth = stringWidth(trimmed)
31 if (strWidth < width) {
32 padding = createPadding(width - strWidth)
35 return trimmed + padding
38 function alignRight (str, width) {
39 var trimmed = str.trimLeft()
40 if (trimmed.length === 0 && str.length >= width) return str
42 var strWidth = stringWidth(trimmed)
44 if (strWidth < width) {
45 padding = createPadding(width - strWidth)
48 return padding + trimmed
51 function alignCenter (str, width) {
52 var trimmed = str.trim()
53 if (trimmed.length === 0 && str.length >= width) return str
56 var strWidth = stringWidth(trimmed)
58 if (strWidth < width) {
59 var padLeftBy = parseInt((width - strWidth) / 2, 10)
60 padLeft = createPadding(padLeftBy)
61 padRight = createPadding(width - (strWidth + padLeftBy))
64 return padLeft + trimmed + padRight