summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/app/common/views/components/mfm.ts8
-rw-r--r--src/mfm/html.ts6
-rw-r--r--src/mfm/parser.ts25
3 files changed, 39 insertions, 0 deletions
diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts
index dbc874c53d..9502d64d82 100644
--- a/src/client/app/common/views/components/mfm.ts
+++ b/src/client/app/common/views/components/mfm.ts
@@ -100,6 +100,14 @@ export default Vue.component('misskey-flavored-markdown', {
return [createElement('del', genEl(token.children))];
}
+ case 'italic': {
+ return (createElement as any)('i', {
+ attrs: {
+ style: 'font-style: oblique;'
+ },
+ }, genEl(token.children));
+ }
+
case 'big': {
bigCount++;
const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5;
diff --git a/src/mfm/html.ts b/src/mfm/html.ts
index 083150ab70..b01c5ad318 100644
--- a/src/mfm/html.ts
+++ b/src/mfm/html.ts
@@ -37,6 +37,12 @@ export default (tokens: Node[], mentionedRemoteUsers: INote['mentionedRemoteUser
return el;
},
+ italic(token) {
+ const el = doc.createElement('i');
+ dive(token.children).forEach(child => el.appendChild(child));
+ return el;
+ },
+
motion(token) {
const el = doc.createElement('i');
dive(token.children).forEach(child => el.appendChild(child));
diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts
index 4bd45516a0..0aec60f823 100644
--- a/src/mfm/parser.ts
+++ b/src/mfm/parser.ts
@@ -69,6 +69,7 @@ const mfm = P.createLanguage({
r.big,
r.bold,
r.strike,
+ r.italic,
r.motion,
r.url,
r.link,
@@ -91,6 +92,8 @@ const mfm = P.createLanguage({
big: r =>
P.regexp(/^\*\*\*([\s\S]+?)\*\*\*/, 1)
.map(x => makeNodeWithChildren('big', P.alt(
+ r.strike,
+ r.italic,
r.mention,
r.hashtag,
r.emoji,
@@ -115,6 +118,8 @@ const mfm = P.createLanguage({
bold: r =>
P.regexp(/\*\*([\s\S]+?)\*\*/, 1)
.map(x => makeNodeWithChildren('bold', P.alt(
+ r.strike,
+ r.italic,
r.mention,
r.hashtag,
r.url,
@@ -131,6 +136,7 @@ const mfm = P.createLanguage({
r.big,
r.bold,
r.strike,
+ r.italic,
r.motion,
r.mention,
r.hashtag,
@@ -176,6 +182,21 @@ const mfm = P.createLanguage({
.map(x => makeNode('inlineCode', { code: x })),
//#endregion
+ //#region Italic
+ italic: r =>
+ P.regexp(/<i>([\s\S]+?)<\/i>/, 1)
+ .map(x => makeNodeWithChildren('italic', P.alt(
+ r.bold,
+ r.strike,
+ r.mention,
+ r.hashtag,
+ r.url,
+ r.link,
+ r.emoji,
+ r.text
+ ).atLeast(1).tryParse(x))),
+ //#endregion
+
//#region Link
link: r =>
P.seqObj(
@@ -192,6 +213,7 @@ const mfm = P.createLanguage({
r.big,
r.bold,
r.strike,
+ r.italic,
r.motion,
r.emoji,
r.text
@@ -232,6 +254,7 @@ const mfm = P.createLanguage({
.map(x => makeNodeWithChildren('motion', P.alt(
r.bold,
r.strike,
+ r.italic,
r.mention,
r.hashtag,
r.emoji,
@@ -270,6 +293,7 @@ const mfm = P.createLanguage({
P.regexp(/~~(.+?)~~/, 1)
.map(x => makeNodeWithChildren('strike', P.alt(
r.bold,
+ r.italic,
r.mention,
r.hashtag,
r.url,
@@ -290,6 +314,7 @@ const mfm = P.createLanguage({
r.big,
r.bold,
r.strike,
+ r.italic,
r.motion,
r.url,
r.link,