* 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
41 lines
889 B
TypeScript
41 lines
889 B
TypeScript
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;
|
|
};
|