diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-08-08 23:25:21 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-08-08 23:25:21 +0900 |
| commit | c52e30e8e0fb0e84a30f5d422585de492bab59ca (patch) | |
| tree | e23c4fd3ff4f089e0259f5e4e751b5bef6c18e1f /src/server | |
| parent | Merge branch 'develop' (diff) | |
| parent | 12.85.0 (diff) | |
| download | misskey-c52e30e8e0fb0e84a30f5d422585de492bab59ca.tar.gz misskey-c52e30e8e0fb0e84a30f5d422585de492bab59ca.tar.bz2 misskey-c52e30e8e0fb0e84a30f5d422585de492bab59ca.zip | |
Merge branch 'develop'
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..30a53a703b 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.match(new RegExp(`docs\/${lang}\/(.+?)\.md$`))![1], + title: markdown.renderer.render(headingTokens, {}, {}), + summary: markdown.renderer.render(firstParagrapfTokens, {}, {}), }); } |