diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-08-05 12:33:51 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-08-05 12:33:51 +0900 |
| commit | cd28504dd8e4623ed864de2ad76e88e1022b08b1 (patch) | |
| tree | 3b0553c92b6e5d10478e565817c766a9ad1a5859 /src/mfm/parse | |
| parent | Merge branch 'master' of https://github.com/syuilo/misskey (diff) | |
| download | misskey-cd28504dd8e4623ed864de2ad76e88e1022b08b1.tar.gz misskey-cd28504dd8e4623ed864de2ad76e88e1022b08b1.tar.bz2 misskey-cd28504dd8e4623ed864de2ad76e88e1022b08b1.zip | |
Add new MFM syntax
Diffstat (limited to 'src/mfm/parse')
| -rw-r--r-- | src/mfm/parse/elements/motion.ts | 20 | ||||
| -rw-r--r-- | src/mfm/parse/index.ts | 7 |
2 files changed, 25 insertions, 2 deletions
diff --git a/src/mfm/parse/elements/motion.ts b/src/mfm/parse/elements/motion.ts new file mode 100644 index 0000000000..555a989750 --- /dev/null +++ b/src/mfm/parse/elements/motion.ts @@ -0,0 +1,20 @@ +/** + * Motion + */ + +export type TextElementMotion = { + type: 'motion' + content: string + motion: string +}; + +export default function(text: string) { + const match = text.match(/^\(\(\((.+?)\)\)\)/); + if (!match) return null; + const motion = match[0]; + return { + type: 'motion', + content: motion, + motion: match[1] + } as TextElementMotion; +} diff --git a/src/mfm/parse/index.ts b/src/mfm/parse/index.ts index 066c062559..99c00ae649 100644 --- a/src/mfm/parse/index.ts +++ b/src/mfm/parse/index.ts @@ -14,6 +14,7 @@ import { TextElementQuote } from './elements/quote'; import { TextElementSearch } from './elements/search'; import { TextElementTitle } from './elements/title'; import { TextElementUrl } from './elements/url'; +import { TextElementMotion } from './elements/motion'; const elements = [ require('./elements/big'), @@ -27,7 +28,8 @@ const elements = [ require('./elements/inline-code'), require('./elements/quote'), require('./elements/emoji'), - require('./elements/search') + require('./elements/search'), + require('./elements/motion') ].map(element => element.default as TextElementProcessor); export type TextElement = { type: 'text', content: string } @@ -42,7 +44,8 @@ export type TextElement = { type: 'text', content: string } | TextElementQuote | TextElementSearch | TextElementTitle - | TextElementUrl; + | TextElementUrl + | TextElementMotion; export type TextElementProcessor = (text: string, i: number) => TextElement | TextElement[]; export default (source: string): TextElement[] => { |