From abcd3cfafb8ae04b9a9d2d6640044607bb7c31ff Mon Sep 17 00:00:00 2001 From: boojack Date: Thu, 24 Nov 2022 20:05:51 +0800 Subject: [PATCH] feat: add `Strikethrough` syntax (#557) feat: add `Strikethrough` rule --- web/src/labs/marked/parser/DoneList.ts | 2 +- web/src/labs/marked/parser/Strikethrough.ts | 19 +++++++++++++++++++ web/src/labs/marked/parser/index.ts | 3 ++- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 web/src/labs/marked/parser/Strikethrough.ts diff --git a/web/src/labs/marked/parser/DoneList.ts b/web/src/labs/marked/parser/DoneList.ts index e366f3ab..e27434db 100644 --- a/web/src/labs/marked/parser/DoneList.ts +++ b/web/src/labs/marked/parser/DoneList.ts @@ -1,7 +1,7 @@ import { inlineElementParserList } from "."; import { marked } from ".."; -export const DONE_LIST_REG = /^- \[x\] (.+)(\n?)/; +export const DONE_LIST_REG = /^- \[[xX]\] (.+)(\n?)/; const renderer = (rawStr: string): string => { const matchResult = rawStr.match(DONE_LIST_REG); diff --git a/web/src/labs/marked/parser/Strikethrough.ts b/web/src/labs/marked/parser/Strikethrough.ts new file mode 100644 index 00000000..db9b8e55 --- /dev/null +++ b/web/src/labs/marked/parser/Strikethrough.ts @@ -0,0 +1,19 @@ +import { marked } from ".."; + +export const STRIKETHROUGH_REG = /~~(.+?)~~/; + +const renderer = (rawStr: string): string => { + const matchResult = rawStr.match(STRIKETHROUGH_REG); + if (!matchResult) { + return rawStr; + } + + const parsedContent = marked(matchResult[1], [], []); + return `${parsedContent}`; +}; + +export default { + name: "Strikethrough", + regex: STRIKETHROUGH_REG, + renderer, +}; diff --git a/web/src/labs/marked/parser/index.ts b/web/src/labs/marked/parser/index.ts index 80ff1e2d..89434adf 100644 --- a/web/src/labs/marked/parser/index.ts +++ b/web/src/labs/marked/parser/index.ts @@ -16,6 +16,7 @@ import Table from "./Table"; import BoldEmphasis from "./BoldEmphasis"; import Blockquote from "./Blockquote"; import HorizontalRules from "./HorizontalRules"; +import Strikethrough from "./Strikethrough"; export { CODE_BLOCK_REG } from "./CodeBlock"; export { TODO_LIST_REG } from "./TodoList"; @@ -38,5 +39,5 @@ export const blockElementParserList = [ UnorderedList, Paragraph, ]; -export const inlineElementParserList = [Image, BoldEmphasis, Bold, Emphasis, Link, InlineCode, PlainLink, Tag, PlainText]; +export const inlineElementParserList = [Image, BoldEmphasis, Bold, Emphasis, Link, InlineCode, PlainLink, Strikethrough, Tag, PlainText]; export const parserList = [...blockElementParserList, ...inlineElementParserList];