1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- '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
- }
|