Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

63 lines
1.5 KiB

import pause from '../helpers/schedulers/pause';
import splitStringByLength from '../helpers/string/splitStringByLength';
import {MessageEntity} from '../layer';
const text = 'abc def ghi jkl mno pqr stu vwx yz';
// const text = 'abcdefghijklmnopqrstuvwxyz';
const entities: MessageEntity[] = [];
const maxLength = 3;
const parts = ['abc def ghi', 'jkl mno pqr', 'stu vwx yz'];
async function split(str: string, maxLength: number, entities: MessageEntity[]) {
if(str.length <= maxLength) return [str];
const delimiter = ' ';
const out: {part: string, entities: MessageEntity[]}[] = [];
let offset = 0;
while(str.length) {
const isEnd = (offset + maxLength) >= str.length;
const sliced = str.slice(offset, offset + maxLength);
if(!sliced.length) {
break;
}
const delimiterIndex = !isEnd ? sliced.lastIndexOf(delimiter) : -1;
console.log(`sliced='${sliced}'`);
let good: string;
if(delimiterIndex !== -1) {
offset += delimiter.length;
good = sliced.slice(0, delimiterIndex);
} else {
good = sliced;
}
if(!good.length) {
continue;
}
offset += good.length;
out.push({part: good, entities: []});
console.log(`'${good}'`);
// await pause(1000);
}
return out;
}
describe('Split string', () => {
const splitted = split(text, maxLength, []);
// console.log(parts, splitted);
test('parts', () => {
expect(1).toEqual(1);
});
test('a', async() => {
console.log(await splitted);
});
// test('')
});