diff --git a/web/src/labs/marked/index.ts b/web/src/labs/marked/index.ts index c7580be8..24473a96 100644 --- a/web/src/labs/marked/index.ts +++ b/web/src/labs/marked/index.ts @@ -26,7 +26,7 @@ export const marked = (markdownStr: string, blockParsers = blockElementParserLis let matchedInlineParser = undefined; let matchedIndex = -1; - for (const parser of inlineElementParserList) { + for (const parser of inlineParsers) { if (parser.name === "plain text" && matchedInlineParser !== undefined) { continue; } diff --git a/web/src/labs/marked/marked.test.ts b/web/src/labs/marked/marked.test.ts index 1dd0fda5..03140322 100644 --- a/web/src/labs/marked/marked.test.ts +++ b/web/src/labs/marked/marked.test.ts @@ -73,6 +73,18 @@ console.log("hello world!") expect(unescape(marked(t.markdown))).toBe(t.want); } }); + test("parse inline code within inline element", () => { + const tests = [ + { + markdown: `Link: [\`baidu\`](https://baidu.com)`, + want: `

Link: baidu

`, + }, + ]; + + for (const t of tests) { + expect(unescape(marked(t.markdown))).toBe(t.want); + } + }); test("parse plain link", () => { const tests = [ { diff --git a/web/src/labs/marked/parser/Link.ts b/web/src/labs/marked/parser/Link.ts index 8ebd6aa5..52d58e8b 100644 --- a/web/src/labs/marked/parser/Link.ts +++ b/web/src/labs/marked/parser/Link.ts @@ -1,4 +1,8 @@ import { escape } from "lodash-es"; +import Emphasis from "./Emphasis"; +import Bold from "./Bold"; +import { marked } from ".."; +import InlineCode from "./InlineCode"; export const LINK_REG = /\[(.*?)\]\((.+?)\)/; @@ -7,8 +11,8 @@ const renderer = (rawStr: string): string => { if (!matchResult) { return rawStr; } - - return `${escape(matchResult[1])}`; + const parsedContent = marked(matchResult[1], [], [InlineCode, Emphasis, Bold]); + return `${parsedContent}`; }; export default { diff --git a/web/src/less/memo-content.less b/web/src/less/memo-content.less index bfe9211f..3d85f063 100644 --- a/web/src/less/memo-content.less +++ b/web/src/less/memo-content.less @@ -31,7 +31,10 @@ } .link { - @apply text-blue-600 cursor-pointer underline break-all hover:opacity-80; + @apply text-blue-600 cursor-pointer underline break-all hover:opacity-80 decoration-1; + code { + @apply underline decoration-1; + } } .ol-block,