trainingproject
Version:
A module to teach you how to module.
39 lines (36 loc) • 1.08 kB
JavaScript
function cacheWcSize (chr) {
var size = cache[chr]
if (isNaN(size)) {
size = wcsize(chr)
cache[chr] = size
}
return size
}
const wcsize = require('wcsize')
const inherits = require('util').inherits
const VarSizeString = require('varsize-string')
const cache = {}
const eatControlCharacters = require('./eatControlCharacters')
const controlWcSize = eatControlCharacters(cacheWcSize)
function WCString (string, ignoreControlCharacters) {
if (!(this instanceof WCString)) {
return new WCString(string, ignoreControlCharacters)
}
var charSizes = cacheWcSize
if (ignoreControlCharacters !== false) {
charSizes = controlWcSize
}
VarSizeString.call(this, string, charSizes)
}
inherits(WCString, VarSizeString)
WCString.padding = function (ignoreControlCharacters) {
var args = Array.prototype.slice.apply(arguments)
var charSizes = cacheWcSize
if (ignoreControlCharacters !== false) {
charSizes = controlWcSize
}
args.shift()
args.unshift(charSizes)
return VarSizeString.padding.apply(VarSizeString, args)
}
module.exports = WCString