diff --git a/scripts/md2excel.js b/scripts/md2excel.js index 97fc097e8..8146e3ead 100644 --- a/scripts/md2excel.js +++ b/scripts/md2excel.js @@ -5,29 +5,22 @@ const XLSX = require('xlsx'); const data = []; -const reg = /---\n([\s\S]*?)\n---/; +// yaml content +const yamlReg = /---\n([\s\S]*?)\n---/; +const docLinkReg = /\${docs}/g; +const apiLinkReg = /\${api}/g; +const exampleLinkReg = /\${examples}/g; -async function readMarkdownFiles(dir) { +async function readFiles(dir) { try { const files = await fs.readdir(dir); for (const file of files) { const filePath = path.join(dir, file); const fileStat = await fs.stat(filePath); if (fileStat.isFile() && /\.(md|markdown)$/i.test(path.extname(file))) { - const content = await fs.readFile(filePath, 'utf8'); - const yamlContent = content.match(reg)[1]; - - const { title, type, group } = yaml.load(yamlContent); - data.push({ - directory: group ? `${type}-${group}` : type, - title, - keywords: '', - extends: '', - refs: '', - format: 'markdown', - content: content.replace(reg, ''), - remarks: '' - }) + readMarkdownFile(file ,filePath) + } else if (fileStat.isFile() && /\.(ts)$/i.test(path.extname(file))) { + readTsFile(file, filePath) } } } catch (err) { @@ -35,6 +28,47 @@ async function readMarkdownFiles(dir) { } } +async function readMarkdownFile(file, filePath) { + let content = await fs.readFile(filePath, 'utf8'); + const yamlContent = content.match(yamlReg)[1]; + + const { title, type, group } = yaml.load(yamlContent); + // remove yaml content + content = content.replace(yamlReg, ''); + + // replace links + content = content.replace(docLinkReg, 'https://galacean.antgroup.com/engine/docs/latest/cn/') + content = content.replace(apiLinkReg, 'https://galacean.antgroup.com/engine/api/latest/') + content = content.replace(exampleLinkReg, 'https://galacean.antgroup.com/engine/examples/latest/') + + data.push({ + // directory: group ? `${type}-${group}` : type, + directory: '官方文档', + title, + keywords: '文档$教程', + extends: '', + refs: '', + format: 'Markdown', + content, + remarks: `官网文档: https://galacean.antgroup.com/engine/docs/latest/cn/${file.replace(/(\.zh-CN)?\.md$/, '')}` + }) +} + +async function readTsFile(file, filePath) { + const content = await fs.readFile(filePath, 'utf8'); + + data.push({ + directory: '官方文档', + title: file, + keywords: '示例$Demo$Example', + extends: '', + refs: '', + format: 'Markdown', + content, + remarks: `官网示例: https://galacean.antgroup.com/engine/examples/latest/${file.replace(/\.ts$/, '')}` + }) +} + function writeExcel(data) { // 中英文表头映射 @@ -68,7 +102,8 @@ function writeExcel(data) { async function main() { - await readMarkdownFiles('docs'); + await readFiles('docs'); + await readFiles('playground'); writeExcel(data); console.log('"docs.xlsx" has been successfully generated!'); }