From bc632e222329f006a5024ab42dca836be7b74b89 Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Fri, 11 Oct 2024 02:03:46 +0900 Subject: [PATCH 1/4] feat: handle external links in md files --- .../scrapper/markdown-convertor.mjs | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/docusaurus-utils/scrapper/markdown-convertor.mjs b/docusaurus-utils/scrapper/markdown-convertor.mjs index a041865d3..04fbf9b7c 100644 --- a/docusaurus-utils/scrapper/markdown-convertor.mjs +++ b/docusaurus-utils/scrapper/markdown-convertor.mjs @@ -53,7 +53,7 @@ function enhanceMarkdownWithBulletPointsCorrected(input) { if (field.includes('\n')) { const [label, ...values] = field.split('\n') return `- ${label.charAt(0).toUpperCase() + - label.slice(1)}:\n ${values.join('\n ')}` + label.slice(1)}:\n ${values.join('\n ')}` } else { return `- ${field.charAt(0).toUpperCase() + field.slice(1)}` } @@ -85,31 +85,31 @@ function parseSlugFromFrontmatter(content) { function escapeHtmlTagSymbols(content) { function replaceComparisonSymbol(text, symbol) { // Regex to match everything, but we'll handle what to replace in the callback - let regex = /(```[\s\S]+?```|`[^`]*`)|(<)/g; - let replacementString = "<"; + let regex = /(```[\s\S]+?```|`[^`]*`)|(<)/g + let replacementString = '<' - if (symbol === ">") { - regex = /(```[\s\S]+?```|`[^`]*`)|(>)/g; - replacementString = ">"; + if (symbol === '>') { + regex = /(```[\s\S]+?```|`[^`]*`)|(>)/g + replacementString = '>' } return text.replace(regex, function(match, code, lessThan) { if (code) { // It's a code segment, return it unchanged - return code; + return code } else if (lessThan) { // It's a '<' outside of code blocks, replace with '<' - return replacementString; + return replacementString } // Default return (though practically unused in this setup) - return match; - }); + return match + }) } - content = replaceComparisonSymbol(content, "<") - content = replaceComparisonSymbol(content, ">") + content = replaceComparisonSymbol(content, '<') + content = replaceComparisonSymbol(content, '>') - return content; + return content } function unescapeHtmlComments(htmlString) { @@ -118,9 +118,15 @@ function unescapeHtmlComments(htmlString) { function updateMarkdownLinksToExcludeMD(content) { function replaceLinks(match, p1, p2, p3) { - let url = p2.replace(/\.md$/, ''); // Remove .md extension from URL - let anchor = p3.replace(/^\//, ''); // Remove preceding '/' from anchor if exists - return `[${p1}](${url}${anchor ? '#' + anchor : ''})`; + // Skip if the link is an external link (starts with 'http://' or 'https://') + if (match.includes('http://') || match.includes('https://')) { + return match + } + + let url = p2.replace(/\.md$/, '') // Remove .md extension from URL + let anchor = p3.replace(/^\//, '') // Remove preceding '/' from anchor if exists + + return `[${p1}](${url}${anchor ? '#' + anchor : ''})` } const regex = /\[((?:(?!\]).)+)\]\(([^)]*?\.md)(?:\/#|\/#)?([^)]*)\)/g @@ -129,7 +135,7 @@ function updateMarkdownLinksToExcludeMD(content) { } export function vacMarkdownToDocusaurusMarkdown(fileContent) { - let convertedContent = fileContent; + let convertedContent = fileContent // Remove 'tags' line from frontmatter because the format is wrong convertedContent = convertedContent.replace(/tags:.*\n?/, '') @@ -151,7 +157,7 @@ export function vacMarkdownToDocusaurusMarkdown(fileContent) { convertedContent = updateMarkdownLinksToExcludeMD(convertedContent) - return convertedContent; + return convertedContent } export function adjustPathForMarkdown(filePath) { @@ -165,4 +171,4 @@ export function adjustPathForMarkdown(filePath) { } return parts.join('/') -} \ No newline at end of file +} From 59b424a92d0a3ebcd6cb8af4cebecd2839e20cd3 Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Fri, 11 Oct 2024 02:04:47 +0900 Subject: [PATCH 2/4] chore: upgrade preset --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index f27d57bd0..55ae03b7e 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "build:full": "yarn scrape && yarn build" }, "dependencies": { - "@acid-info/logos-docusaurus-preset": "^1.0.0-alpha.174", + "@acid-info/logos-docusaurus-preset": "^1.0.0-alpha.181", "@docusaurus/core": "2.4.1", "@docusaurus/preset-classic": "2.4.1", "@docusaurus/theme-mermaid": "^2.4.1", diff --git a/yarn.lock b/yarn.lock index 64fccc731..2c4172d5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,14 +19,14 @@ satori "^0.10.1" sharp "^0.32.1" -"@acid-info/logos-docusaurus-preset@^1.0.0-alpha.174": - version "1.0.0-alpha.174" - resolved "https://registry.yarnpkg.com/@acid-info/logos-docusaurus-preset/-/logos-docusaurus-preset-1.0.0-alpha.174.tgz#34b588a2b81c140e194c00eabd52d0d623f2477c" - integrity sha512-lz8Zm+x3tJF9DepSTfZkiBSKfhsTa1h1WnA5py5lXo5fqZiDmzlIyr0m3Tnxm9hFoejw0DMshgGJmwNNaNFFNA== +"@acid-info/logos-docusaurus-preset@^1.0.0-alpha.181": + version "1.0.0-alpha.181" + resolved "https://registry.yarnpkg.com/@acid-info/logos-docusaurus-preset/-/logos-docusaurus-preset-1.0.0-alpha.181.tgz#31e42de1b84f6e145368e5f252aafd42983b15a9" + integrity sha512-KvMyDGFwst7P5HzlWQ4G08Q6Ep9gPZ9mt35nBN7dksiVzu1heVj3hfY91of2u1EXZszHDmzztU1iqoGYNinOhg== dependencies: "@acid-info/docusaurus-og" "^1.0.0-alpha.131" "@acid-info/logos-docusaurus-search-local" "^1.0.0-alpha.111" - "@acid-info/logos-docusaurus-theme" "^1.0.0-alpha.174" + "@acid-info/logos-docusaurus-theme" "^1.0.0-alpha.181" "@docusaurus/core" "^2.4.1" "@docusaurus/module-type-aliases" "^2.4.1" "@docusaurus/preset-classic" "^2.4.1" @@ -54,10 +54,10 @@ "@easyops-cn/docusaurus-search-local" "^0.33.6" lodash "^4.17.21" -"@acid-info/logos-docusaurus-theme@^1.0.0-alpha.174": - version "1.0.0-alpha.174" - resolved "https://registry.yarnpkg.com/@acid-info/logos-docusaurus-theme/-/logos-docusaurus-theme-1.0.0-alpha.174.tgz#6457c75645e88f2e30d1be691c8008bb33f145e9" - integrity sha512-IgoTGv5zGkZ2lUHnUF0fQiGAdboEbb1L4pR4Ov0wmTfWAQ4aH3vwsjD4ARJ3qLjVapwHG1mEcjzdOqId3wIy2g== +"@acid-info/logos-docusaurus-theme@^1.0.0-alpha.181": + version "1.0.0-alpha.181" + resolved "https://registry.yarnpkg.com/@acid-info/logos-docusaurus-theme/-/logos-docusaurus-theme-1.0.0-alpha.181.tgz#c68946a3372700284f2b9d0d4fc8cd7fc576125c" + integrity sha512-hKLClMNHMrVhoApz+uY096tLAswScKq/FXUGb3VeY675QO75P1OMaPAKdKLnFeLXTRs3lbU3TA6YpkwEZDiJAA== dependencies: "@acid-info/docusaurus-og" "^1.0.0-alpha.131" "@acid-info/lsd-react" "^0.1.0-beta.3" From 2fa764ca92d7018dc5dcf3d095783e787efbcba6 Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Fri, 11 Oct 2024 02:35:42 +0900 Subject: [PATCH 3/4] fix: fix bug with relative link --- docusaurus-utils/scrapper/markdown-convertor.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docusaurus-utils/scrapper/markdown-convertor.mjs b/docusaurus-utils/scrapper/markdown-convertor.mjs index 04fbf9b7c..91ac7da5b 100644 --- a/docusaurus-utils/scrapper/markdown-convertor.mjs +++ b/docusaurus-utils/scrapper/markdown-convertor.mjs @@ -123,6 +123,9 @@ function updateMarkdownLinksToExcludeMD(content) { return match } + // replace ../../ with / + p2 = p2.replace(/\.\.\/\.\.\//g, '/') + let url = p2.replace(/\.md$/, '') // Remove .md extension from URL let anchor = p3.replace(/^\//, '') // Remove preceding '/' from anchor if exists From 5b7b2405db76d37f8c43d8f40b1186fad03c3b4e Mon Sep 17 00:00:00 2001 From: jinhojang6 Date: Fri, 11 Oct 2024 03:02:44 +0900 Subject: [PATCH 4/4] fix: fix bug with updateMarkdownLinksToExcludeMD --- docusaurus-utils/scrapper/markdown-convertor.mjs | 3 --- 1 file changed, 3 deletions(-) diff --git a/docusaurus-utils/scrapper/markdown-convertor.mjs b/docusaurus-utils/scrapper/markdown-convertor.mjs index 91ac7da5b..04fbf9b7c 100644 --- a/docusaurus-utils/scrapper/markdown-convertor.mjs +++ b/docusaurus-utils/scrapper/markdown-convertor.mjs @@ -123,9 +123,6 @@ function updateMarkdownLinksToExcludeMD(content) { return match } - // replace ../../ with / - p2 = p2.replace(/\.\.\/\.\.\//g, '/') - let url = p2.replace(/\.md$/, '') // Remove .md extension from URL let anchor = p3.replace(/^\//, '') // Remove preceding '/' from anchor if exists