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
|
||
|
}
|