强烈谴责fps格式内嵌katex-html,div和stylesheet的行为

This commit is contained in:
undefined committed 2020-09-01 23:43:22 +08:00
1 parent 32a4f5eb4e
commit 0b0c34b0c6
6 files changed
+66 -9

No files matched your search

+5 -7
View File
@@ -2,17 +2,15 @@
import path from 'path'; import path from 'path';
import os from 'os'; import os from 'os';
import fs from 'fs-extra'; import fs from 'fs-extra';
import TurndownService from 'turndown';
import AdmZip from 'adm-zip'; import AdmZip from 'adm-zip';
import xml2js from 'xml2js'; import xml2js from 'xml2js';
import { LocalProblemConfig } from 'hydrooj'; import { LocalProblemConfig } from 'hydrooj';
import { convertHTML } from '@hydrooj/html2md';
import { import {
Route, Handler, param, Types, Route, Handler, param, Types,
} from 'hydrooj/dist/service/server'; } from 'hydrooj/dist/service/server';
import { PERM } from 'hydrooj/dist/model/builtin'; import { PERM } from 'hydrooj/dist/model/builtin';
const turndownService = new TurndownService();
class FpsProblemImportHandler extends Handler { class FpsProblemImportHandler extends Handler {
async get() { async get() {
this.response.template = 'problem_import_fps.html'; this.response.template = 'problem_import_fps.html';
@@ -28,19 +26,19 @@ class FpsProblemImportHandler extends Handler {
if (p.description) { if (p.description) {
content.push( content.push(
this.translate('problem.import.problem_description'), this.translate('problem.import.problem_description'),
p.description.map((i) => turndownService.turndown(i)).join('\n'), p.description.map(convertHTML).join('\n'),
); );
} }
if (p.input) { if (p.input) {
content.push( content.push(
this.translate('problem.import.input_format'), this.translate('problem.import.input_format'),
p.input.map((i) => turndownService.turndown(i)).join('\n'), p.input.map(convertHTML).join('\n'),
); );
} }
if (p.output) { if (p.output) {
content.push( content.push(
this.translate('problem.import.output_format'), this.translate('problem.import.output_format'),
p.output.map((i) => turndownService.turndown(i)).join('\n'), p.output.map(convertHTML).join('\n'),
); );
} }
if (p.sample_input) { if (p.sample_input) {
@@ -60,7 +58,7 @@ class FpsProblemImportHandler extends Handler {
if (p.hint) { if (p.hint) {
content.push( content.push(
this.translate('problem.import.hint'), this.translate('problem.import.hint'),
p.hint.map((i) => turndownService.turndown(i)).join('\n'), p.hint.map(convertHTML).join('\n'),
); );
} }
const config: LocalProblemConfig = { const config: LocalProblemConfig = {
+1 -2
View File
@@ -7,14 +7,13 @@
"author": "undefined <masnn0@outlook.com>", "author": "undefined <masnn0@outlook.com>",
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"dependencies": { "dependencies": {
"@hydrooj/html2md": "^1.0.0",
"adm-zip": "^0.4.16", "adm-zip": "^0.4.16",
"fs-extra": "^9.0.1", "fs-extra": "^9.0.1",
"hydrooj": "^2.12.22", "hydrooj": "^2.12.22",
"turndown": "^6.0.0",
"xml2js": "^0.4.23" "xml2js": "^0.4.23"
}, },
"devDependencies": { "devDependencies": {
"@types/turndown": "^5.0.0",
"@types/xml2js": "^0.4.5" "@types/xml2js": "^0.4.5"
}, },
"scripts": { "scripts": {
+17
View File
@@ -0,0 +1,17 @@
import 'hydrooj';
import TurndownService from 'turndown';
import { JSDOM } from 'jsdom';
const turndownService = new TurndownService();
export function convertHTML(html: string) {
const DOM = new JSDOM(html);
const eles = DOM.window.document.querySelectorAll('span.katex-mathml');
eles.forEach((ele) => {
const MathML = ele.innerHTML;
ele.parentElement.replaceWith(MathML);
});
return turndownService.turndown(DOM.serialize());
}
global.Hydro.lib.convertHTML = convertHTML;
+22
View File
@@ -0,0 +1,22 @@
{
"name": "@hydrooj/html2md",
"version": "1.0.0",
"description": "turn html into markdown",
"main": "package.json",
"repository": "https://github.com/hydro-dev/Hydro.git",
"author": "undefined <masnn0@outlook.com>",
"license": "AGPL-3.0-only",
"dependencies": {
"hydrooj": "^2.12.22",
"jsdom": "^16.4.0",
"turndown": "^6.0.0"
},
"devDependencies": {
"@types/jsdom": "^16.2.3",
"@types/turndown": "^5.0.0"
},
"scripts": {
"build": "tsc",
"lint": "eslint . --ext ts --fix"
}
}
+19
View File
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es2019",
"module": "commonjs",
"esModuleInterop": true,
"moduleResolution": "node",
"declaration": true,
"sourceMap": true,
"composite": true,
"strictBindCallApply": true,
"experimentalDecorators": true,
"outDir": ".",
"rootDir": "."
},
"include": [
"*.ts"
],
"exclude": []
}
+2
View File
@@ -14,6 +14,8 @@
{ "path": "packages/hydrooj" }, { "path": "packages/hydrooj" },
{ "path": "packages/hydrojudge" }, { "path": "packages/hydrojudge" },
{ "path": "packages/geoip" }, { "path": "packages/geoip" },
{ "path": "packages/html2md" },
{ "path": "packages/fps-importer" },
{ "path": "packages/login-with-github" }, { "path": "packages/login-with-github" },
{ "path": "packages/login-with-google" }, { "path": "packages/login-with-google" },
{ "path": "packages/login-with-osu" }, { "path": "packages/login-with-osu" },