From b4654acae22ff614803fccb476923c6394c0dade Mon Sep 17 00:00:00 2001 From: Jacob Shaw Date: Thu, 6 Feb 2025 15:08:15 -0600 Subject: [PATCH 1/4] fix literal codefence examples markdown renderer --- .../dist/YeastNodeTypes/BlockCodeNode.d.ts.map | 2 +- yeast-markdown-renderer/dist/index.js | 8 ++++++-- yeast-markdown-renderer/dist/index.js.map | 2 +- yeast-markdown-renderer/package-lock.json | 4 ++-- yeast-markdown-renderer/package.json | 2 +- .../src/YeastNodeTypes/BlockCodeNode.ts | 10 ++++++++-- .../src/__tests__/resources/GENERAL_DATA.ts | 3 ++- 7 files changed, 21 insertions(+), 10 deletions(-) diff --git a/yeast-markdown-renderer/dist/YeastNodeTypes/BlockCodeNode.d.ts.map b/yeast-markdown-renderer/dist/YeastNodeTypes/BlockCodeNode.d.ts.map index eae6273..475e743 100644 --- a/yeast-markdown-renderer/dist/YeastNodeTypes/BlockCodeNode.d.ts.map +++ b/yeast-markdown-renderer/dist/YeastNodeTypes/BlockCodeNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"BlockCodeNode.d.ts","sourceRoot":"","sources":["../../src/YeastNodeTypes/BlockCodeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,UAyB1F"} \ No newline at end of file +{"version":3,"file":"BlockCodeNode.d.ts","sourceRoot":"","sources":["../../src/YeastNodeTypes/BlockCodeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAM3C,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,UA2B1F"} \ No newline at end of file diff --git a/yeast-markdown-renderer/dist/index.js b/yeast-markdown-renderer/dist/index.js index c242315..1fb07be 100644 --- a/yeast-markdown-renderer/dist/index.js +++ b/yeast-markdown-renderer/dist/index.js @@ -30,6 +30,8 @@ function renderCustomComponent(node) { return `\n${root.end({ prettyPrint: true })}\n`; } +const LITERAL_BACKTICK_REGEX = /((?:^|\n+)(?:\t+|\s+)*)(`{3})/ig; +const LITERAL_TILDE_REGEX = /((?:^|\n+)(?:\t+|\s+)*)(~{3})/ig; function renderBlockCodeNode(node, renderer) { const jsonOptions = { title: node.title, @@ -39,7 +41,9 @@ function renderBlockCodeNode(node, renderer) { tabsToSpaces: node.tabsToSpaces, showLineNumbers: node.showLineNumbers, }; - const children = node.value.split('\n'); + node.value.replace(LITERAL_BACKTICK_REGEX, '$1\\$2'); + const tildeEscapedVal = node.value.replace(LITERAL_TILDE_REGEX, '$1\\$2'); + const children = tildeEscapedVal.split('\n'); let finalVal = ''; const indentation = '\t'; children.forEach((child, index) => { @@ -51,7 +55,7 @@ function renderBlockCodeNode(node, renderer) { const hasOptions = Object.keys(node).some((key) => node[key] !== undefined && key !== 'language' && key !== 'type' && key !== 'value' && key !== 'indentation'); if (!hasOptions) return `\n${indentation.repeat(node.indentation)}\`\`\`${node.language}\n${finalVal}\n${indentation.repeat(node.indentation)}\`\`\`\n`; - return `\n${indentation.repeat(node.indentation)}\`\`\`${JSON.stringify(jsonOptions)}\n${node.value}\n${indentation.repeat(node.indentation)}\`\`\`\n`; + return `\n${indentation.repeat(node.indentation)}\`\`\`${JSON.stringify(jsonOptions)}\n${tildeEscapedVal}\n${indentation.repeat(node.indentation)}\`\`\`\n`; } function renderBlockquoteNode(node, renderer) { diff --git a/yeast-markdown-renderer/dist/index.js.map b/yeast-markdown-renderer/dist/index.js.map index 15e5241..bbcda37 100644 --- a/yeast-markdown-renderer/dist/index.js.map +++ b/yeast-markdown-renderer/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/yeast-markdown-renderer/package-lock.json b/yeast-markdown-renderer/package-lock.json index 1e3f69b..4e5033d 100644 --- a/yeast-markdown-renderer/package-lock.json +++ b/yeast-markdown-renderer/package-lock.json @@ -1,12 +1,12 @@ { "name": "yeast-markdown-renderer", - "version": "1.1.0", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "yeast-markdown-renderer", - "version": "1.1.0", + "version": "1.2.0", "license": "MIT", "devDependencies": { "@rollup/plugin-commonjs": "^21.0.3", diff --git a/yeast-markdown-renderer/package.json b/yeast-markdown-renderer/package.json index b94cef9..e94641f 100644 --- a/yeast-markdown-renderer/package.json +++ b/yeast-markdown-renderer/package.json @@ -1,6 +1,6 @@ { "name": "yeast-markdown-renderer", - "version": "1.1.0", + "version": "1.2.0", "description": "The yeast markdown renderer project provides a class to render yeast documents in markdown ", "exports": { "require": "./src/index.ts", diff --git a/yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts b/yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts index e850d07..3768ca3 100644 --- a/yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts +++ b/yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts @@ -1,6 +1,10 @@ import { MarkdownRenderer } from '../MarkdownRenderer'; import { BlockCodeNode } from 'yeast-core'; +// Matches case when codeblock content is a literal codeblock example +const LITERAL_BACKTICK_REGEX = /((?:^|\n+)(?:\t+|\s+)*)(`{3})/ig; +const LITERAL_TILDE_REGEX = /((?:^|\n+)(?:\t+|\s+)*)(~{3})/ig; + export default function renderBlockCodeNode(node: BlockCodeNode, renderer: MarkdownRenderer) { const jsonOptions = { title: node.title, @@ -10,7 +14,9 @@ export default function renderBlockCodeNode(node: BlockCodeNode, renderer: Markd tabsToSpaces: node.tabsToSpaces, showLineNumbers: node.showLineNumbers, }; - const children = node.value.split('\n'); + const backtickEscapedVal = node.value.replace(LITERAL_BACKTICK_REGEX, '$1\\$2'); + const tildeEscapedVal = node.value.replace(LITERAL_TILDE_REGEX, '$1\\$2'); + const children = tildeEscapedVal.split('\n'); let finalVal = ''; const indentation = '\t'; children.forEach((child, index) => { @@ -23,7 +29,7 @@ export default function renderBlockCodeNode(node: BlockCodeNode, renderer: Markd ); if (!hasOptions) return `\n${indentation.repeat(node.indentation)}\`\`\`${node.language}\n${finalVal}\n${indentation.repeat(node.indentation)}\`\`\`\n`; - return `\n${indentation.repeat(node.indentation)}\`\`\`${JSON.stringify(jsonOptions)}\n${node.value}\n${indentation.repeat( + return `\n${indentation.repeat(node.indentation)}\`\`\`${JSON.stringify(jsonOptions)}\n${tildeEscapedVal}\n${indentation.repeat( node.indentation )}\`\`\`\n`; } diff --git a/yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts b/yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts index 3358666..2244936 100644 --- a/yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts +++ b/yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts @@ -96,7 +96,8 @@ export const GENERAL_DATA = { type: 'code', language: 'java', indentation: 2, - value: "console.log('hello world, I'm codefence')", + // value: "derp", + value: "```\n// Code goes here\nString str = \"my string\";\n```", }, { type: 'callout', From e786e6f237472001050bae7d879a8afb1fe0976f Mon Sep 17 00:00:00 2001 From: Jacob Shaw Date: Thu, 6 Feb 2025 15:23:17 -0600 Subject: [PATCH 2/4] fix --- yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts b/yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts index 3768ca3..8a33146 100644 --- a/yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts +++ b/yeast-markdown-renderer/src/YeastNodeTypes/BlockCodeNode.ts @@ -15,7 +15,7 @@ export default function renderBlockCodeNode(node: BlockCodeNode, renderer: Markd showLineNumbers: node.showLineNumbers, }; const backtickEscapedVal = node.value.replace(LITERAL_BACKTICK_REGEX, '$1\\$2'); - const tildeEscapedVal = node.value.replace(LITERAL_TILDE_REGEX, '$1\\$2'); + const tildeEscapedVal = backtickEscapedVal.replace(LITERAL_TILDE_REGEX, '$1\\$2'); const children = tildeEscapedVal.split('\n'); let finalVal = ''; const indentation = '\t'; From 089dc2fef5dfa8dbcffe2c70fae82c9f6242d20b Mon Sep 17 00:00:00 2001 From: Jacob Shaw Date: Thu, 6 Feb 2025 15:23:44 -0600 Subject: [PATCH 3/4] build --- yeast-markdown-renderer/dist/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yeast-markdown-renderer/dist/index.js b/yeast-markdown-renderer/dist/index.js index 1fb07be..19b691a 100644 --- a/yeast-markdown-renderer/dist/index.js +++ b/yeast-markdown-renderer/dist/index.js @@ -41,8 +41,8 @@ function renderBlockCodeNode(node, renderer) { tabsToSpaces: node.tabsToSpaces, showLineNumbers: node.showLineNumbers, }; - node.value.replace(LITERAL_BACKTICK_REGEX, '$1\\$2'); - const tildeEscapedVal = node.value.replace(LITERAL_TILDE_REGEX, '$1\\$2'); + const backtickEscapedVal = node.value.replace(LITERAL_BACKTICK_REGEX, '$1\\$2'); + const tildeEscapedVal = backtickEscapedVal.replace(LITERAL_TILDE_REGEX, '$1\\$2'); const children = tildeEscapedVal.split('\n'); let finalVal = ''; const indentation = '\t'; From bb2add5f8ca3479cdc6bf50494774729b6fc5442 Mon Sep 17 00:00:00 2001 From: Jacob Shaw Date: Thu, 6 Feb 2025 15:32:18 -0600 Subject: [PATCH 4/4] rm --- yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts b/yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts index 2244936..a392f39 100644 --- a/yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts +++ b/yeast-markdown-renderer/src/__tests__/resources/GENERAL_DATA.ts @@ -96,7 +96,6 @@ export const GENERAL_DATA = { type: 'code', language: 'java', indentation: 2, - // value: "derp", value: "```\n// Code goes here\nString str = \"my string\";\n```", }, {