diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-16 21:57:19 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-16 21:57:19 +0900 |
| commit | 0ff390ed80be8fa64c1ba1d6a7cbc671b0156931 (patch) | |
| tree | b41d77d715f28640c123032c31b6b230019b5dcb /test | |
| parent | [MFM] Better URL parsing (diff) | |
| download | misskey-0ff390ed80be8fa64c1ba1d6a7cbc671b0156931.tar.gz misskey-0ff390ed80be8fa64c1ba1d6a7cbc671b0156931.tar.bz2 misskey-0ff390ed80be8fa64c1ba1d6a7cbc671b0156931.zip | |
[MFM] Improve various parsing
Resolve #2779
Resolve #3053
Diffstat (limited to 'test')
| -rw-r--r-- | test/mfm.ts | 99 |
1 files changed, 64 insertions, 35 deletions
diff --git a/test/mfm.ts b/test/mfm.ts index 27d0ffe667..9a562280d1 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -82,7 +82,7 @@ describe('Text', () => { { type: 'text', content: ' お腹ペコい' } ], tokens); }); -/* + it('ignore', () => { const tokens = analyze('idolm@ster'); assert.deepEqual([ @@ -91,20 +91,19 @@ describe('Text', () => { const tokens2 = analyze('@a\n@b\n@c'); assert.deepEqual([ - { type: 'mention', content: '@a', username: 'a', host: null }, + { type: 'mention', content: '@a', canonical: '@a', username: 'a', host: null }, { type: 'text', content: '\n' }, - { type: 'mention', content: '@b', username: 'b', host: null }, + { type: 'mention', content: '@b', canonical: '@b', username: 'b', host: null }, { type: 'text', content: '\n' }, - { type: 'mention', content: '@c', username: 'c', host: null } + { type: 'mention', content: '@c', canonical: '@c', username: 'c', host: null } ], tokens2); const tokens3 = analyze('**x**@a'); assert.deepEqual([ { type: 'bold', content: '**x**', bold: 'x' }, - { type: 'mention', content: '@a', username: 'a', host: null } + { type: 'mention', content: '@a', canonical: '@a', username: 'a', host: null } ], tokens3); }); -*/ }); it('hashtag', () => { @@ -159,38 +158,68 @@ describe('Text', () => { ], tokens5); }); - it('url', () => { - const tokens1 = analyze('https://example.com'); - assert.deepEqual([{ - type: 'url', - content: 'https://example.com', - url: 'https://example.com' - }], tokens1); + describe('url', () => { + it('simple', () => { + const tokens = analyze('https://example.com'); + assert.deepEqual([{ + type: 'url', + content: 'https://example.com', + url: 'https://example.com' + }], tokens); + }); - const tokens2 = analyze('https://example.com.'); - assert.deepEqual([{ - type: 'url', - content: 'https://example.com', - url: 'https://example.com' - }, { - type: 'text', content: '.' - }], tokens2); + it('ignore trailing dot', () => { + const tokens = analyze('https://example.com.'); + assert.deepEqual([{ + type: 'url', + content: 'https://example.com', + url: 'https://example.com' + }, { + type: 'text', content: '.' + }], tokens); + }); - const tokens3 = analyze('https://example.com/foo?bar=a,b'); - assert.deepEqual([{ - type: 'url', - content: 'https://example.com/foo?bar=a,b', - url: 'https://example.com/foo?bar=a,b' - }], tokens3); + it('with comma', () => { + const tokens = analyze('https://example.com/foo?bar=a,b'); + assert.deepEqual([{ + type: 'url', + content: 'https://example.com/foo?bar=a,b', + url: 'https://example.com/foo?bar=a,b' + }], tokens); + }); - const tokens4 = analyze('https://example.com/foo, bar'); - assert.deepEqual([{ - type: 'url', - content: 'https://example.com/foo', - url: 'https://example.com/foo' - }, { - type: 'text', content: ', bar' - }], tokens4); + it('ignore trailing comma', () => { + const tokens = analyze('https://example.com/foo, bar'); + assert.deepEqual([{ + type: 'url', + content: 'https://example.com/foo', + url: 'https://example.com/foo' + }, { + type: 'text', content: ', bar' + }], tokens); + }); + + it('with brackets', () => { + const tokens = analyze('https://example.com/foo(bar)'); + assert.deepEqual([{ + type: 'url', + content: 'https://example.com/foo(bar)', + url: 'https://example.com/foo(bar)' + }], tokens); + }); + + it('ignore parent brackets', () => { + const tokens = analyze('(https://example.com/foo)'); + assert.deepEqual([{ + type: 'text', content: '(' + }, { + type: 'url', + content: 'https://example.com/foo', + url: 'https://example.com/foo' + }, { + type: 'text', content: ')' + }], tokens); + }); }); it('link', () => { |