diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-25 13:36:40 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-25 13:36:40 +0900 |
| commit | f3155ea180a9dfcfad9f8d356e5d334fe8ccf48f (patch) | |
| tree | 5f810930e134db97aa2e1a163244467d8a0e5d40 /src | |
| parent | Improve MFM (diff) | |
| download | sharkey-f3155ea180a9dfcfad9f8d356e5d334fe8ccf48f.tar.gz sharkey-f3155ea180a9dfcfad9f8d356e5d334fe8ccf48f.tar.bz2 sharkey-f3155ea180a9dfcfad9f8d356e5d334fe8ccf48f.zip | |
[MFM] Add center syntax
Resolve #1775
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/app/common/views/components/mfm.ts | 8 | ||||
| -rw-r--r-- | src/mfm/html.ts | 6 | ||||
| -rw-r--r-- | src/mfm/parse.ts | 2 | ||||
| -rw-r--r-- | src/mfm/parser.ts | 18 |
4 files changed, 33 insertions, 1 deletions
diff --git a/src/client/app/common/views/components/mfm.ts b/src/client/app/common/views/components/mfm.ts index e93ea5ccba..d1ce4873fe 100644 --- a/src/client/app/common/views/components/mfm.ts +++ b/src/client/app/common/views/components/mfm.ts @@ -111,6 +111,14 @@ export default Vue.component('misskey-flavored-markdown', { }, genEl(token.children)); } + case 'center': { + return [createElement('div', { + attrs: { + style: 'text-align:center;' + } + }, genEl(token.children))]; + } + case 'motion': { motionCount++; const isLong = getTextCount(token.children) > 10 || getChildrenCount(token.children) > 5; diff --git a/src/mfm/html.ts b/src/mfm/html.ts index d45cc13af4..8b63d8f824 100644 --- a/src/mfm/html.ts +++ b/src/mfm/html.ts @@ -45,6 +45,12 @@ export default (tokens: Node[], mentionedRemoteUsers: INote['mentionedRemoteUser return pre; }, + center(token) { + const el = doc.createElement('div'); + dive(token.children).forEach(child => el.appendChild(child)); + return el; + }, + emoji(token) { return doc.createTextNode(token.props.emoji ? token.props.emoji : `:${token.props.name}:`); }, diff --git a/src/mfm/parse.ts b/src/mfm/parse.ts index 28e61272d3..ee434d8dd9 100644 --- a/src/mfm/parse.ts +++ b/src/mfm/parse.ts @@ -41,7 +41,7 @@ export default (source: string): Node[] => { } function isBlockNode(node: Node): boolean { - return ['blockCode', 'quote', 'title'].includes(node.name); + return ['blockCode', 'center', 'quote', 'title'].includes(node.name); } /** diff --git a/src/mfm/parser.ts b/src/mfm/parser.ts index b02a885961..1d6a4b8108 100644 --- a/src/mfm/parser.ts +++ b/src/mfm/parser.ts @@ -73,6 +73,7 @@ const mfm = P.createLanguage({ r.math, r.search, r.title, + r.center, r.text ).atLeast(1), @@ -113,6 +114,23 @@ const mfm = P.createLanguage({ ).atLeast(1).tryParse(x))), //#endregion + //#region Center + center: r => + P.regexp(/<center>([\s\S]+?)<\/center>/, 1) + .map(x => makeNodeWithChildren('center', P.alt( + r.big, + r.bold, + r.motion, + r.mention, + r.hashtag, + r.emoji, + r.math, + r.url, + r.link, + r.text + ).atLeast(1).tryParse(x))), + //#endregion + //#region Emoji emoji: r => P.alt( |