Escape markdown sequences (#2208)
* escape inline markdown character * fix typo * improve document around custom markdown plugin and add escape sequence utils * recover inline escape sequences on edit * remove escape sequences from plain text body * use `s` for strike-through instead of del * escape block markdown sequences * fix remove escape sequence was not removing all slashes from plain text * recover block sequences on edit
This commit is contained in:
40
src/app/plugins/markdown/inline/parser.ts
Normal file
40
src/app/plugins/markdown/inline/parser.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import {
|
||||
BoldRule,
|
||||
CodeRule,
|
||||
EscapeRule,
|
||||
ItalicRule1,
|
||||
ItalicRule2,
|
||||
LinkRule,
|
||||
SpoilerRule,
|
||||
StrikeRule,
|
||||
UnderlineRule,
|
||||
} from './rules';
|
||||
import { runInlineRule, runInlineRules } from './runner';
|
||||
import { InlineMDParser } from './type';
|
||||
|
||||
const LeveledRules = [
|
||||
BoldRule,
|
||||
ItalicRule1,
|
||||
UnderlineRule,
|
||||
ItalicRule2,
|
||||
StrikeRule,
|
||||
SpoilerRule,
|
||||
LinkRule,
|
||||
EscapeRule,
|
||||
];
|
||||
|
||||
/**
|
||||
* Parses inline markdown text into HTML using defined rules.
|
||||
*
|
||||
* @param text - The markdown text to be parsed.
|
||||
* @returns The parsed HTML or the original text if no markdown was found.
|
||||
*/
|
||||
export const parseInlineMD: InlineMDParser = (text) => {
|
||||
if (text === '') return text;
|
||||
let result: string | undefined;
|
||||
if (!result) result = runInlineRule(text, CodeRule, parseInlineMD);
|
||||
|
||||
if (!result) result = runInlineRules(text, LeveledRules, parseInlineMD);
|
||||
|
||||
return result ?? text;
|
||||
};
|
||||
Reference in New Issue
Block a user