From e28b59dc88c61269a50181c2052d61062ca21e7d Mon Sep 17 00:00:00 2001 From: Amio Date: Fri, 5 Jul 2019 16:39:21 +0800 Subject: [PATCH] (doc pages): sort examples by scheme --- libs/gen-help.ts | 37 +++++++++++++++++++++++++++---------- libs/serve-docs.ts | 1 + 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/libs/gen-help.ts b/libs/gen-help.ts index c346d34..ba3af94 100644 --- a/libs/gen-help.ts +++ b/libs/gen-help.ts @@ -1,5 +1,6 @@ // import path from 'path' -// import { liveBadgeList } from './badge-list' + +import matchRoute from 'my-way' const { live: liveBadges } = require('../static/.gen/badges.json') @@ -24,15 +25,31 @@ export default function genHelp (id) { return '' } - const { examples, routes, help } = meta + const { examples, routes, help = '' } = meta - const Docs = `# /${id}\n\n${help || ''}` - const schemeLinks = routes.map(r => `- \`${r}\``) - const Schemes = `## Schemes\n\n${schemeLinks.join(' \n')}` - // @ts-ignore - const exampleList = Object.entries(examples) - .map(([url, desc]) => `- ![${url}](${url}) [${url}](${url}) ${desc}`) - const Examples = `## Examples\n\n${exampleList.join('\n')}` + let md = `# /${id}\n\n${help}` - return [Docs, Schemes, Examples].join('\n\n') + const egCats = routes.reduce((accu, curr) => { + accu[curr] = [] + return accu + }, {}) + + Object.entries(examples).forEach((eg) => { + const scheme = routes.find(r => matchRoute(r, eg[0])) + if (scheme) { + egCats[scheme].push(eg) + } + }) + + md += '## Examples\n\n' + + Object.entries(egCats).forEach(([cat, egs]) => { + // @ts-ignore + const egList = egs.map(([url, desc]) => { + return `- ![${url}](${url}) [${url}](${url}) ${desc}` + }).join('\n') + md += `\n\n__\`${cat}\`__\n${egList}` + }) + + return md } diff --git a/libs/serve-docs.ts b/libs/serve-docs.ts index 40e2471..6ef69a8 100644 --- a/libs/serve-docs.ts +++ b/libs/serve-docs.ts @@ -23,6 +23,7 @@ export default async function (req, res) { const inlineCSS = ` .markdown-body { max-width: 850px } + .markdown-body h1 { margin-bottom: 42px } li > img { vertical-align: middle; margin: 0.2em 0; font-size: 12px; float: right } li > img + a { font-family: monospace; font-size: 0.9em } li > img + a + i { color: #AAA }