diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-01-25 16:41:51 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-01-25 16:41:51 +0900 |
| commit | 42cd7c8a752b801a51e7e3718e4712251e66e2df (patch) | |
| tree | 6b9b124a0f30151bf482d9b00284dc1873b905c0 /src/mfm/parser.ts | |
| parent | [Test] Add sone streaming tests (diff) | |
| download | misskey-42cd7c8a752b801a51e7e3718e4712251e66e2df.tar.gz misskey-42cd7c8a752b801a51e7e3718e4712251e66e2df.tar.bz2 misskey-42cd7c8a752b801a51e7e3718e4712251e66e2df.zip | |
[MFM] Improve italic syntax detection
Diffstat (limited to 'src/mfm/parser.ts')
| -rw-r--r-- | src/mfm/parser.ts | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index 10b16d619a..b86e1d5559 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -224,7 +224,16 @@ const mfm = P.createLanguage({ //#region Italic italic: r => - P.alt(P.regexp(/<i>([\s\S]+?)<\/i>/, 1), P.regexp(/(\*|_)([a-zA-Z0-9]+?[\s\S]*?)\1/, 2)) + P.alt( + P.regexp(/<i>([\s\S]+?)<\/i>/, 1), + P((input, i) => { + const text = input.substr(i); + const match = text.match(/^(\*|_)([a-zA-Z0-9]+?[\s\S]*?)\1/); + if (!match) return P.makeFailure(i, 'not a italic'); + if (input[i - 1] != null && input[i - 1].match(/[a-z0-9]/i)) return P.makeFailure(i, 'not a italic'); + return P.makeSuccess(i + match[0].length, match[2]); + }) + ) .map(x => createTree('italic', P.alt( r.bold, r.strike, |