activitypub: add MathML rendering
Ref: #343 (comment) Ref: FEP-dc88 Changelog: Changed
This commit is contained in:
parent
1e7d2cf54c
commit
f6c3d44265
2 changed files with 12 additions and 6 deletions
|
@ -60,6 +60,7 @@
|
||||||
"json5-loader": "4.0.1",
|
"json5-loader": "4.0.1",
|
||||||
"jsonld": "6.0.0",
|
"jsonld": "6.0.0",
|
||||||
"jsrsasign": "10.5.25",
|
"jsrsasign": "10.5.25",
|
||||||
|
"katex": "^0.16.0",
|
||||||
"koa": "2.13.4",
|
"koa": "2.13.4",
|
||||||
"koa-bodyparser": "4.3.0",
|
"koa-bodyparser": "4.3.0",
|
||||||
"koa-favicon": "2.1.0",
|
"koa-favicon": "2.1.0",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { JSDOM } from 'jsdom';
|
import { JSDOM } from 'jsdom';
|
||||||
|
import katex from 'katex';
|
||||||
import * as mfm from 'mfm-js';
|
import * as mfm from 'mfm-js';
|
||||||
import config from '@/config/index.js';
|
import config from '@/config/index.js';
|
||||||
import { UserProfiles } from '@/models/index.js';
|
import { UserProfiles } from '@/models/index.js';
|
||||||
|
@ -6,6 +7,14 @@ import { extractMentions } from '@/misc/extract-mentions.js';
|
||||||
import { intersperse } from '@/prelude/array.js';
|
import { intersperse } from '@/prelude/array.js';
|
||||||
import { toPunyNullable } from '@/misc/convert-host.js';
|
import { toPunyNullable } from '@/misc/convert-host.js';
|
||||||
|
|
||||||
|
function toMathMl(code: string): HTMLElement {
|
||||||
|
const rendered = katex.renderToString(code, {
|
||||||
|
throwOnError: false,
|
||||||
|
output: 'mathml',
|
||||||
|
});
|
||||||
|
return JSDOM.fragment(rendered).querySelector('math');
|
||||||
|
}
|
||||||
|
|
||||||
// Transforms MFM to HTML, given the MFM text and a list of user IDs that are
|
// Transforms MFM to HTML, given the MFM text and a list of user IDs that are
|
||||||
// mentioned in the text. If the list of mentions is not given, all mentions
|
// mentioned in the text. If the list of mentions is not given, all mentions
|
||||||
// from the text will be extracted.
|
// from the text will be extracted.
|
||||||
|
@ -98,15 +107,11 @@ export async function toHtml(mfmText: string, mentions?: string[]): Promise<stri
|
||||||
},
|
},
|
||||||
|
|
||||||
async mathInline(node) {
|
async mathInline(node) {
|
||||||
const el = doc.createElement('code');
|
return toMathMl(node.props.formula);
|
||||||
el.textContent = node.props.formula;
|
|
||||||
return el;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
async mathBlock(node) {
|
async mathBlock(node) {
|
||||||
const el = doc.createElement('code');
|
return toMathMl(node.props.formula);
|
||||||
el.textContent = node.props.formula;
|
|
||||||
return el;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
async link(node) {
|
async link(node) {
|
||||||
|
|
Loading…
Reference in a new issue