diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-08-05 00:15:51 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-08-05 00:15:51 +0900 |
| commit | e044d11782b0f7237b7f1354aba0f00365d91885 (patch) | |
| tree | 007e186a2b78d984cc7710ef41e5d871871a9ef3 /src/server | |
| parent | refactor (diff) | |
| download | misskey-e044d11782b0f7237b7f1354aba0f00365d91885.tar.gz misskey-e044d11782b0f7237b7f1354aba0f00365d91885.tar.bz2 misskey-e044d11782b0f7237b7f1354aba0f00365d91885.zip | |
Improve docs
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/web/index.ts | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/server/web/index.ts b/src/server/web/index.ts index 50fea757f2..a732e7f5b4 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -121,14 +121,22 @@ router.get('/api.json', async ctx => { router.get('/docs.json', async ctx => { const lang = ctx.query.lang; + const query = ctx.query.q; if (!Object.keys(locales).includes(lang)) { ctx.body = []; return; } - const paths = glob.sync(__dirname + `/../../../src/docs/${lang}/*.md`); - const docs: { path: string; title: string; }[] = []; + const dirPath = `${__dirname}/../../../src/docs/${lang}`.replace(/\\/g, '/'); + const paths = glob.sync(`${dirPath}/**/*.md`); + const docs: { path: string; title: string; summary: string; }[] = []; for (const path of paths) { const md = fs.readFileSync(path, { encoding: 'utf8' }); + + if (query && query.length > 0) { + // TODO: カタカナをひらがなにして比較するなどしたい + if (!md.includes(query)) continue; + } + const parsed = markdown.parse(md, {}); if (parsed.length === 0) return; @@ -147,9 +155,22 @@ router.get('/docs.json', async ctx => { } } + const firstParagrapfTokens = []; + while (buf[0].type !== 'paragraph_open') { + buf.shift(); + } + buf.shift(); + while (buf[0].type as string !== 'paragraph_close') { + const token = buf.shift(); + if (token) { + firstParagrapfTokens.push(token); + } + } + docs.push({ - path: path.split('/').pop()!.split('.')[0], - title: markdown.renderer.render(headingTokens, {}, {}) + path: path.replace(`${dirPath}/`, '').split('.')[0], + title: markdown.renderer.render(headingTokens, {}, {}), + summary: markdown.renderer.render(firstParagrapfTokens, {}, {}), }); } |