Extract parsePlain function

This commit is contained in:
Aya Morisawa 2019-01-30 15:27:54 +09:00
parent 98795aad9a
commit e3b1d00e4c
No known key found for this signature in database
GPG key ID: 3E64865D70D579F2
4 changed files with 19 additions and 12 deletions

View file

@ -1,7 +1,7 @@
import Vue, { VNode } from 'vue'; import Vue, { VNode } from 'vue';
import { length } from 'stringz'; import { length } from 'stringz';
import { MfmForest } from '../../../../../mfm/types'; import { MfmForest } from '../../../../../mfm/types';
import parse from '../../../../../mfm/parse'; import parse, { parsePlain } from '../../../../../mfm/parse';
import MkUrl from './url.vue'; import MkUrl from './url.vue';
import MkMention from './mention.vue'; import MkMention from './mention.vue';
import { concat, sum } from '../../../../../prelude/array'; import { concat, sum } from '../../../../../prelude/array';
@ -46,7 +46,7 @@ export default Vue.component('misskey-flavored-markdown', {
render(createElement) { render(createElement) {
if (this.text == null || this.text == '') return; if (this.text == null || this.text == '') return;
const ast = parse(this.text, this.plainText); const ast = (this.plainText ? parsePlain : parse)(this.text);
let bigCount = 0; let bigCount = 0;
let motionCount = 0; let motionCount = 0;

View file

@ -2,11 +2,18 @@ import parser from './parser';
import { MfmForest } from './types'; import { MfmForest } from './types';
import { normalize } from './normalize'; import { normalize } from './normalize';
export default (source: string, plainText = false): MfmForest => { export default (source: string): MfmForest => {
if (source == null || source == '') { if (source == null || source == '') {
return null; return null;
} }
const raw = plainText ? parser.plain.tryParse(source) : parser.root.tryParse(source) as MfmForest; return normalize(parser.root.tryParse(source));
return normalize(raw);
}; };
export function parsePlain(source: string): MfmForest {
if (source == null || source == '') {
return null;
}
return normalize(parser.plain.tryParse(source));
}

View file

@ -6,7 +6,7 @@ import acceptAllFollowRequests from '../../../../services/following/requests/acc
import { publishToFollowers } from '../../../../services/i/update'; import { publishToFollowers } from '../../../../services/i/update';
import define from '../../define'; import define from '../../define';
import getDriveFileUrl from '../../../../misc/get-drive-file-url'; import getDriveFileUrl from '../../../../misc/get-drive-file-url';
import parse from '../../../../mfm/parse'; import parse, { parsePlain } from '../../../../mfm/parse';
import extractEmojis from '../../../../misc/extract-emojis'; import extractEmojis from '../../../../misc/extract-emojis';
const langmap = require('langmap'); const langmap = require('langmap');
@ -206,7 +206,7 @@ export default define(meta, (ps, user, app) => new Promise(async (res, rej) => {
let emojis = [] as string[]; let emojis = [] as string[];
if (updates.name != null) { if (updates.name != null) {
const tokens = parse(updates.name, true); const tokens = parsePlain(updates.name);
emojis = emojis.concat(extractEmojis(tokens)); emojis = emojis.concat(extractEmojis(tokens));
} }

View file

@ -10,7 +10,7 @@
import * as assert from 'assert'; import * as assert from 'assert';
import analyze from '../src/mfm/parse'; import analyze, { parsePlain } from '../src/mfm/parse';
import toHtml from '../src/mfm/toHtml'; import toHtml from '../src/mfm/toHtml';
import { createTree as tree, createLeaf as leaf, MfmTree } from '../src/mfm/types'; import { createTree as tree, createLeaf as leaf, MfmTree } from '../src/mfm/types';
import { removeOrphanedBrackets } from '../src/mfm/parser'; import { removeOrphanedBrackets } from '../src/mfm/parser';
@ -1093,21 +1093,21 @@ describe('MFM', () => {
describe('plainText', () => { describe('plainText', () => {
it('text', () => { it('text', () => {
const tokens = analyze('foo', true); const tokens = parsePlain('foo');
assert.deepStrictEqual(tokens, [ assert.deepStrictEqual(tokens, [
text('foo'), text('foo'),
]); ]);
}); });
it('emoji', () => { it('emoji', () => {
const tokens = analyze(':foo:', true); const tokens = parsePlain(':foo:');
assert.deepStrictEqual(tokens, [ assert.deepStrictEqual(tokens, [
leaf('emoji', { name: 'foo' }) leaf('emoji', { name: 'foo' })
]); ]);
}); });
it('emoji in text', () => { it('emoji in text', () => {
const tokens = analyze('foo:bar:baz', true); const tokens = parsePlain('foo:bar:baz');
assert.deepStrictEqual(tokens, [ assert.deepStrictEqual(tokens, [
text('foo'), text('foo'),
leaf('emoji', { name: 'bar' }), leaf('emoji', { name: 'bar' }),
@ -1116,7 +1116,7 @@ describe('MFM', () => {
}); });
it('disallow other syntax', () => { it('disallow other syntax', () => {
const tokens = analyze('foo **bar** baz', true); const tokens = parsePlain('foo **bar** baz');
assert.deepStrictEqual(tokens, [ assert.deepStrictEqual(tokens, [
text('foo **bar** baz'), text('foo **bar** baz'),
]); ]);