diff options
author | Vse Mozhet Byt <vsemozhetbyt@gmail.com> | 2018-04-25 23:44:38 +0300 |
---|---|---|
committer | Vse Mozhet Byt <vsemozhetbyt@gmail.com> | 2018-04-28 00:52:25 +0300 |
commit | ad6a65ba110932d5af187b8422ce2cdb808a4a2f (patch) | |
tree | b316a60a25ea042dbc8221746a8baf32c54b0d14 /tools | |
parent | a4b4854e2ff0f3de69caa5e46d001575b9e22273 (diff) | |
download | android-node-v8-ad6a65ba110932d5af187b8422ce2cdb808a4a2f.tar.gz android-node-v8-ad6a65ba110932d5af187b8422ce2cdb808a4a2f.tar.bz2 android-node-v8-ad6a65ba110932d5af187b8422ce2cdb808a4a2f.zip |
tools: simplify HTML generation
PR-URL: https://github.com/nodejs/node/pull/20307
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/doc/generate.js | 5 | ||||
-rw-r--r-- | tools/doc/html.js | 85 |
2 files changed, 23 insertions, 67 deletions
diff --git a/tools/doc/generate.js b/tools/doc/generate.js index 0da9dba4e6..9f217b19c7 100644 --- a/tools/doc/generate.js +++ b/tools/doc/generate.js @@ -29,7 +29,6 @@ const fs = require('fs'); const args = process.argv.slice(2); let format = 'json'; -let template = null; let filename = null; let nodeVersion = null; let analytics = null; @@ -39,8 +38,6 @@ args.forEach(function(arg) { filename = arg; } else if (arg.startsWith('--format=')) { format = arg.replace(/^--format=/, ''); - } else if (arg.startsWith('--template=')) { - template = arg.replace(/^--template=/, ''); } else if (arg.startsWith('--node-version=')) { nodeVersion = arg.replace(/^--node-version=/, ''); } else if (arg.startsWith('--analytics=')) { @@ -71,7 +68,7 @@ function next(er, input) { break; case 'html': - require('./html')({ input, filename, template, nodeVersion, analytics }, + require('./html')({ input, filename, nodeVersion, analytics }, (err, html) => { if (err) throw err; console.log(html); diff --git a/tools/doc/html.js b/tools/doc/html.js index ff0230309e..439fc05701 100644 --- a/tools/doc/html.js +++ b/tools/doc/html.js @@ -25,7 +25,6 @@ const common = require('./common.js'); const fs = require('fs'); const marked = require('marked'); const path = require('path'); -const preprocess = require('./preprocess.js'); const typeParser = require('./type-parser.js'); module.exports = toHTML; @@ -42,76 +41,36 @@ marked.setOptions({ renderer: renderer }); -// TODO(chrisdickinson): never stop vomiting / fix this. -const gtocPath = path.resolve(path.join( - __dirname, - '..', - '..', - 'doc', - 'api', - '_toc.md' -)); -var gtocLoading = null; -var gtocData = null; +const docPath = path.resolve(__dirname, '..', '..', 'doc'); + +const gtocPath = path.join(docPath, 'api', '_toc.md'); +const gtocMD = fs.readFileSync(gtocPath, 'utf8').replace(/^@\/\/.*$/gm, ''); +const gtocHTML = marked(gtocMD).replace( + /<a href="(.*?)"/g, + (all, href) => `<a class="nav-${toID(href)}" href="${href}"` +); + +const templatePath = path.join(docPath, 'template.html'); +const template = fs.readFileSync(templatePath, 'utf8'); + var docCreated = null; var nodeVersion = null; /** - * opts: input, filename, template, nodeVersion. + * opts: input, filename, nodeVersion. */ function toHTML(opts, cb) { - const template = opts.template; - nodeVersion = opts.nodeVersion || process.version; docCreated = opts.input.match(DOC_CREATED_REG_EXP); - if (gtocData) { - return onGtocLoaded(); - } - - if (gtocLoading === null) { - gtocLoading = [onGtocLoaded]; - return loadGtoc(function(err, data) { - if (err) throw err; - gtocData = data; - gtocLoading.forEach(function(xs) { - xs(); - }); - }); - } - - if (gtocLoading) { - return gtocLoading.push(onGtocLoaded); - } - - function onGtocLoaded() { - const lexed = marked.lexer(opts.input); - fs.readFile(template, 'utf8', function(er, template) { - if (er) return cb(er); - render({ - lexed: lexed, - filename: opts.filename, - template: template, - nodeVersion: nodeVersion, - analytics: opts.analytics, - }, cb); - }); - } -} - -function loadGtoc(cb) { - fs.readFile(gtocPath, 'utf8', function(err, data) { - if (err) return cb(err); - - preprocess(gtocPath, data, function(err, data) { - if (err) return cb(err); - - data = marked(data).replace(/<a href="(.*?)"/gm, function(a, m) { - return `<a class="nav-${toID(m)}" href="${m}"`; - }); - return cb(null, data); - }); - }); + const lexed = marked.lexer(opts.input); + render({ + lexed: lexed, + filename: opts.filename, + template: template, + nodeVersion: nodeVersion, + analytics: opts.analytics, + }, cb); } function toID(filename) { @@ -150,7 +109,7 @@ function render(opts, cb) { template = template.replace(/__TOC__/g, toc); template = template.replace( /__GTOC__/g, - gtocData.replace(`class="nav-${id}`, `class="nav-${id} active`) + gtocHTML.replace(`class="nav-${id}`, `class="nav-${id} active`) ); if (opts.analytics) { |