diff --git a/CHANGELOG.md b/CHANGELOG.md index 451ed3fdcf..1450a9775e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ unreleased * ログイン時に二段階認証が分かりにくいのを改善 * 投稿のツールチップを出すのは時間の上だけに変更 * `*`や`_`でもイタリック構文を使えるように(アルファベットのみ) +* `__`でも太字構文を使えるように(アルファベットのみ) * ハッシュタグ判定の強化 * ストーク機能の廃止 * 関係のない返信がタイムラインに流れる問題を修正 diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index c271b62e23..10b16d619a 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/, 2) + P.alt(P.regexp(/\*\*([\s\S]+?)\*\*/, 1), P.regexp(/__([a-zA-Z0-9\s]+?)__/, 1)) .map(x => createTree('bold', P.alt( r.strike, r.italic, diff --git a/test/mfm.ts b/test/mfm.ts index bacce017c2..54096e6bb0 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -187,6 +187,13 @@ describe('MFM', () => { ]); }); + it('with underscores (ensure it allows alphabet only)', () => { + const tokens = analyze('(=^・__________・^=)'); + assert.deepStrictEqual(tokens, [ + text('(=^・__________・^=)') + ]); + }); + it('mixed syntax', () => { const tokens = analyze('**foo__'); assert.deepStrictEqual(tokens, [