| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 'use strict'var stringWidth = require('string-width')module.exports = TemplateItemfunction isPercent (num) {  if (typeof num !== 'string') return false  return num.slice(-1) === '%'}function percent (num) {  return Number(num.slice(0, -1)) / 100}function TemplateItem (values, outputLength) {  this.overallOutputLength = outputLength  this.finished = false  this.type = null  this.value = null  this.length = null  this.maxLength = null  this.minLength = null  this.kerning = null  this.align = 'left'  this.padLeft = 0  this.padRight = 0  this.index = null  this.first = null  this.last = null  if (typeof values === 'string') {    this.value = values  } else {    for (var prop in values) this[prop] = values[prop]  }  // Realize percents  if (isPercent(this.length)) {    this.length = Math.round(this.overallOutputLength * percent(this.length))  }  if (isPercent(this.minLength)) {    this.minLength = Math.round(this.overallOutputLength * percent(this.minLength))  }  if (isPercent(this.maxLength)) {    this.maxLength = Math.round(this.overallOutputLength * percent(this.maxLength))  }  return this}TemplateItem.prototype = {}TemplateItem.prototype.getBaseLength = function () {  var length = this.length  if (length == null && typeof this.value === 'string' && this.maxLength == null && this.minLength == null) {    length = stringWidth(this.value)  }  return length}TemplateItem.prototype.getLength = function () {  var length = this.getBaseLength()  if (length == null) return null  return length + this.padLeft + this.padRight}TemplateItem.prototype.getMaxLength = function () {  if (this.maxLength == null) return null  return this.maxLength + this.padLeft + this.padRight}TemplateItem.prototype.getMinLength = function () {  if (this.minLength == null) return null  return this.minLength + this.padLeft + this.padRight}
 |