UNPKG

serialport-v5

Version:

fork with electron support of Node.js package to access serial ports. Linux, OSX and Windows. Welcome your robotic JavaScript overlords. Better yet, program them!

74 lines (63 loc) 1.9 kB
'use strict' var stringWidth = require('string-width') module.exports = TemplateItem function 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 }