|
@@ -4,67 +4,76 @@ import { HTMLParser } from "./html";
|
|
export class MarkdownV2Parser {
|
|
export class MarkdownV2Parser {
|
|
static parse(message: string): [string, Api.TypeMessageEntity[]] {
|
|
static parse(message: string): [string, Api.TypeMessageEntity[]] {
|
|
// Bold
|
|
// Bold
|
|
- message = message.replace(/\*(.*?)\*/g, '<b>$1</b>');
|
|
|
|
|
|
+ message = message.replace(/\*(.*?)\*/g, "<b>$1</b>");
|
|
|
|
|
|
// underline
|
|
// underline
|
|
- message = message.replace(/__(.*?)__/g, '<u>$1</u>');
|
|
|
|
|
|
+ message = message.replace(/__(.*?)__/g, "<u>$1</u>");
|
|
|
|
|
|
// strikethrough
|
|
// strikethrough
|
|
- message = message.replace(/~(.*?)~/g, '<s>$1</s>');
|
|
|
|
|
|
+ message = message.replace(/~(.*?)~/g, "<s>$1</s>");
|
|
|
|
|
|
// italic
|
|
// italic
|
|
- message = message.replace(/-(.*?)-/g, '<i>$1</i>');
|
|
|
|
-
|
|
|
|
|
|
+ message = message.replace(/-(.*?)-/g, "<i>$1</i>");
|
|
|
|
+
|
|
// pre
|
|
// pre
|
|
- message = message.replace(/```(.*?)```/g, '<pre>$1</pre>');
|
|
|
|
-
|
|
|
|
|
|
+ message = message.replace(/```(.*?)```/g, "<pre>$1</pre>");
|
|
|
|
+
|
|
// code
|
|
// code
|
|
- message = message.replace(/`(.*?)`/g, '<code>$1</code>');
|
|
|
|
|
|
+ message = message.replace(/`(.*?)`/g, "<code>$1</code>");
|
|
|
|
|
|
- // Spoiler
|
|
|
|
- message = message.replace(/\|\|(.*?)\|\|/g, '<spoiler>$1</spoiler>');
|
|
|
|
|
|
+ // Spoiler
|
|
|
|
+ message = message.replace(/\|\|(.*?)\|\|/g, "<spoiler>$1</spoiler>");
|
|
|
|
|
|
// Inline URL
|
|
// Inline URL
|
|
- message = message.replace(/(?<!\!)\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>');
|
|
|
|
|
|
+ message = message.replace(
|
|
|
|
+ /(?<!\!)\[([^\]]+)\]\(([^)]+)\)/g,
|
|
|
|
+ '<a href="$2">$1</a>'
|
|
|
|
+ );
|
|
|
|
|
|
- // Emoji
|
|
|
|
- message = message.replace(/!\[([^\]]+)\]\(tg:\/\/emoji\?id=(\d+)\)/g, '<tg-emoji emoji-id="$2">$1</tg-emoji>');
|
|
|
|
- return HTMLParser.parse(message)
|
|
|
|
|
|
+ // Emoji
|
|
|
|
+ message = message.replace(
|
|
|
|
+ /!\[([^\]]+)\]\(tg:\/\/emoji\?id=(\d+)\)/g,
|
|
|
|
+ '<tg-emoji emoji-id="$2">$1</tg-emoji>'
|
|
|
|
+ );
|
|
|
|
+ return HTMLParser.parse(message);
|
|
}
|
|
}
|
|
|
|
|
|
static unparse(
|
|
static unparse(
|
|
text: string,
|
|
text: string,
|
|
entities: Api.TypeMessageEntity[] | undefined
|
|
entities: Api.TypeMessageEntity[] | undefined
|
|
) {
|
|
) {
|
|
- text = HTMLParser.unparse(text, entities)
|
|
|
|
|
|
+ text = HTMLParser.unparse(text, entities);
|
|
|
|
|
|
// Bold
|
|
// Bold
|
|
- text = text.replace(/<b>(.*?)<\/b>/g, '*$1*');
|
|
|
|
|
|
+ text = text.replace(/<b>(.*?)<\/b>/g, "*$1*");
|
|
|
|
|
|
// Underline
|
|
// Underline
|
|
- text = text.replace(/<u>(.*?)<\/u>/g, '__$1__');
|
|
|
|
|
|
+ text = text.replace(/<u>(.*?)<\/u>/g, "__$1__");
|
|
|
|
|
|
// Code
|
|
// Code
|
|
- text = text.replace(/<code>(.*?)<\/code>/g, '`$1`');
|
|
|
|
|
|
+ text = text.replace(/<code>(.*?)<\/code>/g, "`$1`");
|
|
|
|
|
|
// Pre
|
|
// Pre
|
|
- text = text.replace(/<pre>(.*?)<\/pre>/g, '```$1```');
|
|
|
|
|
|
+ text = text.replace(/<pre>(.*?)<\/pre>/g, "```$1```");
|
|
|
|
|
|
// strikethrough
|
|
// strikethrough
|
|
- text = text.replace(/<s>(.*?)<\/s>/g, '~$1~');
|
|
|
|
|
|
+ text = text.replace(/<s>(.*?)<\/s>/g, "~$1~");
|
|
|
|
|
|
// Italic
|
|
// Italic
|
|
- text = text.replace(/<i>(.*?)<\/i>/g, '-$1-');
|
|
|
|
|
|
+ text = text.replace(/<i>(.*?)<\/i>/g, "-$1-");
|
|
|
|
|
|
// Spoiler
|
|
// Spoiler
|
|
- text = text.replace(/<spoiler>(.*?)<\/spoiler>/g, '||$1||');
|
|
|
|
|
|
+ text = text.replace(/<spoiler>(.*?)<\/spoiler>/g, "||$1||");
|
|
|
|
|
|
// Inline URL
|
|
// Inline URL
|
|
- text = text.replace(/<a href="([^"]+)">([^<]+)<\/a>/g, '[$2]($1)');
|
|
|
|
|
|
+ text = text.replace(/<a href="([^"]+)">([^<]+)<\/a>/g, "[$2]($1)");
|
|
|
|
|
|
// Emoji
|
|
// Emoji
|
|
- text = text.replace(/<tg-emoji emoji-id="(\d+)">([^<]+)<\/tg-emoji>/g, '');
|
|
|
|
|
|
+ text = text.replace(
|
|
|
|
+ /<tg-emoji emoji-id="(\d+)">([^<]+)<\/tg-emoji>/g,
|
|
|
|
+ ""
|
|
|
|
+ );
|
|
|
|
|
|
- return text
|
|
|
|
|
|
+ return text;
|
|
}
|
|
}
|
|
}
|
|
}
|