29 lines
559 B
Plaintext
29 lines
559 B
Plaintext
const wcwidth = require("wcwidth")
|
|
|
|
module.exports = function(input, breakAtLength) {
|
|
|
|
let str = input.toString()
|
|
const charArr = [...str]
|
|
let index = 0
|
|
let indexOfLastFitChar = 0
|
|
let fittableLength = 0
|
|
|
|
while(charArr.length > 0) {
|
|
|
|
const char = charArr.shift()
|
|
const currentLength = fittableLength + wcwidth(char)
|
|
|
|
if(currentLength <= breakAtLength) {
|
|
indexOfLastFitChar = index
|
|
fittableLength = currentLength
|
|
index++
|
|
} else {
|
|
break
|
|
}
|
|
|
|
}
|
|
|
|
//break after this character
|
|
return indexOfLastFitChar
|
|
}
|