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.
64 lines
1.5 KiB
64 lines
1.5 KiB
2 years ago
|
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('')
|
||
|
});
|