summaryrefslogtreecommitdiff
path: root/src/mfm/parser.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-01-25 16:41:51 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-01-25 16:41:51 +0900
commit42cd7c8a752b801a51e7e3718e4712251e66e2df (patch)
tree6b9b124a0f30151bf482d9b00284dc1873b905c0 /src/mfm/parser.ts
parent[Test] Add sone streaming tests (diff)
downloadmisskey-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.ts11
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,