diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 2ab38d97a8..c271b62e23 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -154,7 +154,7 @@ const mfm = P.createLanguage({ //#region Bold bold: r => - P.regexp(/\*\*([\s\S]+?)\*\*/, 1) + P.regexp(/(\*\*|__)([\s\S]+?)\1/, 2) .map(x => createTree('bold', P.alt( r.strike, r.italic, diff --git a/test/mfm.ts b/test/mfm.ts index b681ed1d01..bacce017c2 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -177,6 +177,29 @@ describe('MFM', () => { text('bar'), ]); }); + + it('with underscores', () => { + const tokens = analyze('__foo__'); + assert.deepStrictEqual(tokens, [ + tree('bold', [ + text('foo') + ], {}), + ]); + }); + + it('mixed syntax', () => { + const tokens = analyze('**foo__'); + assert.deepStrictEqual(tokens, [ + text('**foo__'), + ]); + }); + + it('mixed syntax', () => { + const tokens = analyze('__foo**'); + assert.deepStrictEqual(tokens, [ + text('__foo**'), + ]); + }); }); it('big', () => {