summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormarihachi <marihachi0620@gmail.com>2021-11-01 23:47:13 +0900
committerGitHub <noreply@github.com>2021-11-01 23:47:13 +0900
commit1c38c7010d9a9604df979faa867cd8f9e7d825c9 (patch)
treed4083b7255f69eaaf0eb5cedcf3591a344fd0762 /src
parentadd some locales (diff)
downloadmisskey-1c38c7010d9a9604df979faa867cd8f9e7d825c9.tar.gz
misskey-1c38c7010d9a9604df979faa867cd8f9e7d825c9.tar.bz2
misskey-1c38c7010d9a9604df979faa867cd8f9e7d825c9.zip
refactor: Introduce list of MFM Functions (#7882)
* introduce list of MFM Functions * add note
Diffstat (limited to 'src')
-rw-r--r--src/client/components/mfm.ts3
-rw-r--r--src/mfm/fn-name-list.ts23
-rw-r--r--src/remote/activitypub/misc/get-note-html.ts3
-rw-r--r--src/remote/activitypub/renderer/person.ts3
-rw-r--r--src/services/note/create.ts7
5 files changed, 33 insertions, 6 deletions
diff --git a/src/client/components/mfm.ts b/src/client/components/mfm.ts
index f3411cadc3..ad6e711f6f 100644
--- a/src/client/components/mfm.ts
+++ b/src/client/components/mfm.ts
@@ -11,6 +11,7 @@ import MkGoogle from '@client/components/google.vue';
import MkSparkle from '@client/components/sparkle.vue';
import MkA from '@client/components/global/a.vue';
import { host } from '@client/config';
+import { fnNameList } from '@/mfm/fn-name-list';
export default defineComponent({
props: {
@@ -46,7 +47,7 @@ export default defineComponent({
render() {
if (this.text == null || this.text == '') return;
- const ast = (this.plain ? mfm.parsePlain : mfm.parse)(this.text);
+ const ast = (this.plain ? mfm.parsePlain : mfm.parse)(this.text, { fnNameList });
const validTime = (t: string | null | undefined) => {
if (t == null) return null;
diff --git a/src/mfm/fn-name-list.ts b/src/mfm/fn-name-list.ts
new file mode 100644
index 0000000000..1203bfffde
--- /dev/null
+++ b/src/mfm/fn-name-list.ts
@@ -0,0 +1,23 @@
+// NOTE: client/components/autocomplete.vueにも関数のリスト(MFM_TAGS)があるので統合?
+
+const fnNameList = [
+ 'tada',
+ 'jelly',
+ 'twitch',
+ 'shake',
+ 'spin',
+ 'jump',
+ 'bounce',
+ 'flip',
+ 'x2',
+ 'x3',
+ 'x4',
+ 'font',
+ 'blur',
+ 'rainbow',
+ 'sparkle',
+];
+
+export {
+ fnNameList
+};
diff --git a/src/remote/activitypub/misc/get-note-html.ts b/src/remote/activitypub/misc/get-note-html.ts
index 043335a5be..a24ec43a69 100644
--- a/src/remote/activitypub/misc/get-note-html.ts
+++ b/src/remote/activitypub/misc/get-note-html.ts
@@ -1,9 +1,10 @@
import * as mfm from 'mfm-js';
+import { fnNameList } from '@/mfm/fn-name-list';
import { Note } from '@/models/entities/note';
import { toHtml } from '../../../mfm/to-html';
export default function(note: Note) {
- let html = note.text ? toHtml(mfm.parse(note.text), JSON.parse(note.mentionedRemoteUsers)) : null;
+ let html = note.text ? toHtml(mfm.parse(note.text, { fnNameList }), JSON.parse(note.mentionedRemoteUsers)) : null;
if (html == null) html = '<p>.</p>';
return html;
diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts
index f2a283a870..7e94abddfc 100644
--- a/src/remote/activitypub/renderer/person.ts
+++ b/src/remote/activitypub/renderer/person.ts
@@ -11,6 +11,7 @@ import { IIdentifier } from '../models/identifier';
import renderHashtag from './hashtag';
import { DriveFiles, UserProfiles } from '@/models/index';
import { getUserKeypair } from '@/misc/keypair-store';
+import { fnNameList } from '@/mfm/fn-name-list';
export async function renderPerson(user: ILocalUser) {
const id = `${config.url}/users/${user.id}`;
@@ -66,7 +67,7 @@ export async function renderPerson(user: ILocalUser) {
url: `${config.url}/@${user.username}`,
preferredUsername: user.username,
name: user.name,
- summary: profile.description ? toHtml(mfm.parse(profile.description)) : null,
+ summary: profile.description ? toHtml(mfm.parse(profile.description, { fnNameList })) : null,
icon: avatar ? renderImage(avatar) : null,
image: banner ? renderImage(banner) : null,
tag,
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index 69d854ab1a..98819c69a4 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -34,6 +34,7 @@ import { deliverToRelays } from '../relay';
import { Channel } from '@/models/entities/channel';
import { normalizeForSearch } from '@/misc/normalize-for-search';
import { getAntennas } from '@/misc/antenna-cache';
+import { fnNameList } from '@/mfm/fn-name-list';
type NotificationType = 'reply' | 'renote' | 'quote' | 'mention';
@@ -182,10 +183,10 @@ export default async (user: { id: User['id']; username: User['username']; host:
// Parse MFM if needed
if (!tags || !emojis || !mentionedUsers) {
- const tokens = data.text ? mfm.parse(data.text)! : [];
- const cwTokens = data.cw ? mfm.parse(data.cw)! : [];
+ const tokens = data.text ? mfm.parse(data.text, { fnNameList })! : [];
+ const cwTokens = data.cw ? mfm.parse(data.cw, { fnNameList })! : [];
const choiceTokens = data.poll && data.poll.choices
- ? concat(data.poll.choices.map(choice => mfm.parse(choice)!))
+ ? concat(data.poll.choices.map(choice => mfm.parse(choice, { fnNameList })!))
: [];
const combinedTokens = tokens.concat(cwTokens).concat(choiceTokens);