From 23bcb95c0aecd4d46fa7fdeaf856888b5d254b8b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 12 Jan 2019 14:10:16 +0900 Subject: [PATCH] [MFM] Better hashtag parsing: Ignore trailing colon --- src/mfm/parser.ts | 2 +- test/mfm.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 205d5ede1..50877bcdb 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -205,7 +205,7 @@ const mfm = P.createLanguage({ hashtag: r => P((input, i) => { const text = input.substr(i); - const match = text.match(/^#([^\s\.,!\?#]+)/i); + const match = text.match(/^#([^\s\.,!\?#:]+)/i); if (!match) return P.makeFailure(i, 'not a hashtag'); let hashtag = match[1]; hashtag = removeOrphanedBrackets(hashtag); diff --git a/test/mfm.ts b/test/mfm.ts index 6bbbe146c..7e2de4733 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -357,6 +357,14 @@ describe('MFM', () => { ]); }); + it('ignore colon', () => { + const tokens = analyze('#Foo:'); + assert.deepStrictEqual(tokens, [ + leaf('hashtag', { hashtag: 'Foo' }), + text(':'), + ]); + }); + it('allow including number', () => { const tokens = analyze('#foo123'); assert.deepStrictEqual(tokens, [