Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | 1x 1x 1x 3x 3x 3x 3x 3x 2x 2x 2x 2x 2x 2x 2x 3x 10100x 2x 10100x 10098x 10098x 10098x 10098x 1531x 1531x 10098x 8567x 8567x 8567x 10098x 10100x 2x 2x 2x 2x 2x 2x 2x 2x 2x 3x 2052x 2052x 2052x 2052x 2052x 2052x 2052x 2048x 2048x 2048x 2048x 7778x 7778x 2048x 2048x 2048x 2048x 2048x 519x 2048x 1529x 1529x 2048x 2052x 2052x 2052x 2x 2x 2x 2052x 2052x 2052x 2052x 2x 2x 2x 2x 1x 1x | export const MAX_MESSAGE_LENGTH = 50;
const splitMessage = (
msg: string,
chunkSize: number = MAX_MESSAGE_LENGTH
): string[] => {
// base case
if (msg.length <= chunkSize) return [msg];
// split message into words
const words = msg.split(" ");
const chunkMessages: string[] = [];
// loop through words to get chunkMessages (no number) (n)
// get length chunkMessages
for (let word of words) {
if (!chunkMessages.length) {
chunkMessages.push(word);
} else {
const currentChunk = chunkMessages[chunkMessages.length - 1];
// if can't add word to current chunk
if (currentChunk.length + word.length > chunkSize + 1) {
// create new chunk
chunkMessages.push(word);
} else {
// else push it to current chunk
chunkMessages[chunkMessages.length - 1] = currentChunk + ` ${word}`;
}
}
}
// -> plus length with 1, convert to string and get length (example: 9 + 1 = 10 -> 2, 99 + 1 = 100 -> length 3)
const possibleTotalChunkStringLength = (chunkMessages.length + 1).toString()
.length;
// `${index}/${xxx} hello the world...`
const chunkMessagesWithNumber: string[] = [];
// chunkMessages.map((i, index) => `${index + 1}/${'x'.repeat(possibleTotalChunkStringLength)} ${i}`);
for (let x = 0; x < chunkMessages.length; x++) {
const chunkMessage = chunkMessages[x];
let chunkMessageWithNumber: string = `${x + 1}/${"x".repeat(
possibleTotalChunkStringLength
)} ${chunkMessage}`;
// handle if chunkMessageWithNumber more than chunkSize
if (chunkMessageWithNumber.length > chunkSize) {
// message need to move
let indexSplit = chunkSize - 1;
while (chunkMessageWithNumber[indexSplit] !== " " && indexSplit > 0) {
indexSplit--;
}
let messageNeedMove = chunkMessageWithNumber.slice(indexSplit + 1);
chunkMessageWithNumber = chunkMessageWithNumber.slice(0, indexSplit + 1);
// add messageNeedMove to next chunk
if (!chunkMessages[x + 1]) {
chunkMessages[x + 1] = messageNeedMove;
} else {
chunkMessages[x + 1] = `${messageNeedMove} ${chunkMessages[x + 1]}`;
}
}
chunkMessagesWithNumber.push(chunkMessageWithNumber);
}
// replace x with chunkMessagesWithNumber length
const chunkMessagesWithNumberWithLength = chunkMessagesWithNumber.map((i) =>
i.replace(
"x".repeat(possibleTotalChunkStringLength),
chunkMessagesWithNumber.length.toString()
)
);
return chunkMessagesWithNumberWithLength;
};
export default splitMessage;
|