mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 16:38:19 +01:00
30 lines
774 B
TypeScript
30 lines
774 B
TypeScript
|
|
import { sanitizeHtml } from "@sanitization";
|
||
|
|
import linkifyHtml from "linkify-html";
|
||
|
|
import linkifyStr from "linkify-string";
|
||
|
|
import { parse } from "marked";
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Converts plaintext, MFM or Markdown to HTML
|
||
|
|
* @param text Text to convert
|
||
|
|
* @param content_type Content type of the text (optional, defaults to plaintext)
|
||
|
|
* @returns HTML
|
||
|
|
*/
|
||
|
|
export const convertTextToHtml = async (
|
||
|
|
text: string,
|
||
|
|
content_type?: string
|
||
|
|
) => {
|
||
|
|
if (content_type === "text/markdown") {
|
||
|
|
return linkifyHtml(await sanitizeHtml(parse(text)));
|
||
|
|
} else if (content_type === "text/x.misskeymarkdown") {
|
||
|
|
// Parse as MFM
|
||
|
|
// TODO: Implement MFM
|
||
|
|
return text;
|
||
|
|
} else {
|
||
|
|
// Parse as plaintext
|
||
|
|
return linkifyStr(text)
|
||
|
|
.split("\n")
|
||
|
|
.map(line => `<p>${line}</p>`)
|
||
|
|
.join("\n");
|
||
|
|
}
|
||
|
|
};
|