You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					66 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					66 lines
				
				1.4 KiB
			| 
											3 years ago
										 | '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 | ||
|  | } |