summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-08-08 23:25:21 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-08-08 23:25:21 +0900
commitc52e30e8e0fb0e84a30f5d422585de492bab59ca (patch)
treee23c4fd3ff4f089e0259f5e4e751b5bef6c18e1f /src/server
parentMerge branch 'develop' (diff)
parent12.85.0 (diff)
downloadmisskey-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.ts29
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, {}, {}),
});
}