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.
		
		
		
		
		
			
		
			
				
					
					
						
							35 lines
						
					
					
						
							998 B
						
					
					
				
			
		
		
	
	
							35 lines
						
					
					
						
							998 B
						
					
					
				'use strict' | 
						|
var validate = require('aproba') | 
						|
var renderTemplate = require('./render-template.js') | 
						|
var wideTruncate = require('./wide-truncate') | 
						|
var stringWidth = require('string-width') | 
						|
 | 
						|
module.exports = function (theme, width, completed) { | 
						|
  validate('ONN', [theme, width, completed]) | 
						|
  if (completed < 0) completed = 0 | 
						|
  if (completed > 1) completed = 1 | 
						|
  if (width <= 0) return '' | 
						|
  var sofar = Math.round(width * completed) | 
						|
  var rest = width - sofar | 
						|
  var template = [ | 
						|
    {type: 'complete', value: repeat(theme.complete, sofar), length: sofar}, | 
						|
    {type: 'remaining', value: repeat(theme.remaining, rest), length: rest} | 
						|
  ] | 
						|
  return renderTemplate(width, template, theme) | 
						|
} | 
						|
 | 
						|
// lodash's way of repeating | 
						|
function repeat (string, width) { | 
						|
  var result = '' | 
						|
  var n = width | 
						|
  do { | 
						|
    if (n % 2) { | 
						|
      result += string | 
						|
    } | 
						|
    n = Math.floor(n / 2) | 
						|
    /*eslint no-self-assign: 0*/ | 
						|
    string += string | 
						|
  } while (n && stringWidth(result) < width) | 
						|
 | 
						|
  return wideTruncate(result, width) | 
						|
}
 | 
						|
 |