v0.2.87
This commit is contained in:
1 parent
acfe926066
commit
df403c0aa7
26 files changed
+1502
-144
No files matched your search
@@ -0,0 +1,37 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import { readFileSync } from 'node:fs';
|
||||
|
||||
const autocomplete = readFileSync('static/js/mention-autocomplete.js', 'utf8')
|
||||
.replace(/^import \{ t \} from "@rustpad\/i18n";$/m, 'const t = (key, params, fallback) => fallback;');
|
||||
const autocompleteModule = await import('data:text/javascript;base64,' + Buffer.from(autocomplete).toString('base64'));
|
||||
const navigation = readFileSync('static/js/mention-navigation.js', 'utf8')
|
||||
.replace(/^import \{ t \} from "@rustpad\/i18n";$/m, 'const t = (key, params, fallback) => fallback;')
|
||||
.replace(/^import \{ normalizeMentionUsers \} from "@rustpad\/mention-autocomplete";$/m,
|
||||
`const normalizeMentionUsers = ${autocompleteModule.normalizeMentionUsers.toString()};`);
|
||||
const { collectMentionOccurrences } = await import('data:text/javascript;base64,' + Buffer.from(navigation).toString('base64'));
|
||||
|
||||
const users = [
|
||||
{nickname:'Dominik',color:'#1256aa',email:'private@example.org'},
|
||||
{nickname:'dOMINIK',color:'#abc123'},
|
||||
{nickname:'Dora',color:'#dd00dd'},
|
||||
{nickname:'Ala+Dev',color:'#123abc'},
|
||||
];
|
||||
function matches(source, options) { return collectMentionOccurrences(source, users, options); }
|
||||
function valid(source, options) { return matches(source, options).map(mention => source.slice(mention.start, mention.end)); }
|
||||
assert.deepEqual(valid('Tu @Dominik, @Dora oraz @dominik.'), ['@Dominik', '@Dora', '@dominik']);
|
||||
assert.deepEqual(valid('Przykład @DominiK @Ala+Dev, @Dominik'), ['@DominiK', '@Ala+Dev', '@Dominik']);
|
||||
assert.deepEqual(valid('john@Dominik.org a@Dora @@Dominik @Dominika @Other'), []);
|
||||
assert.deepEqual(valid('`@Dominik` i @Dora [@Dominik](https://example.org) oraz https://example.org/@Dora'), ['@Dora']);
|
||||
assert.deepEqual(valid('[file=secret@Dominik,key] i [image=image@Dora] oraz @Dominik'), ['@Dominik']);
|
||||
assert.deepEqual(valid('```sh\n@Dominik\n```\nPo @Dora\n~~~\n@Dora\n~~~\n@Dominik'), ['@Dora', '@Dominik']);
|
||||
assert.deepEqual(valid(' ```js\n@Dominik\n ```\n@Dominik'), ['@Dominik']);
|
||||
assert.deepEqual(valid('````rust\n@Dominik\n```\n@Dora\n````\n@Dora'), ['@Dora']);
|
||||
assert.deepEqual(valid('@Dora', { markdown:false }), ['@Dora']);
|
||||
assert.deepEqual(valid('```\n@Dominik\n```', { markdown:false }), ['@Dominik']);
|
||||
const source = '🙂 @Dominik\nDrugi @Dora i @Dominik';
|
||||
const items = matches(source);
|
||||
assert.deepEqual(items.map(item=>item.start), [source.indexOf('@Dominik'),source.indexOf('@Dora'),source.lastIndexOf('@Dominik')]);
|
||||
assert.deepEqual(items.map(item=>item.sourceLine), [1,2,2]);
|
||||
assert.ok(items.every(item => !Object.hasOwn(item, 'email')));
|
||||
assert.equal(collectMentionOccurrences('Hej @Dominik', []).length, 0);
|
||||
console.log('PASS: mention navigation positions, permissions, Markdown exclusions, UTF-16, code fences');
|
||||
Reference in new issue
Block a user