'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

}