From 62c61b754d7ade2d806fe9017818eb252c54353c Mon Sep 17 00:00:00 2001 From: Marek Łabuz Date: Sat, 12 Oct 2019 15:00:42 +0200 Subject: tools: add unified plugin changing links for html docs This commit introduces additional stage in the process of generating html docs from markdown files. Plugin transforms links to *.md files in the respository to links to *.html files in the online documentation. Fixes: https://github.com/nodejs/node/issues/28689 PR-URL: https://github.com/nodejs/node/pull/29946 Reviewed-By: Anna Henningsen --- test/doctool/test-doctool-html.js | 30 ++++++++++++++++++++++++++++++ test/fixtures/document_with_links.md | 20 ++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 test/fixtures/document_with_links.md (limited to 'test') diff --git a/test/doctool/test-doctool-html.js b/test/doctool/test-doctool-html.js index 11b28dc8a2..ee8099f8cd 100644 --- a/test/doctool/test-doctool-html.js +++ b/test/doctool/test-doctool-html.js @@ -11,6 +11,7 @@ try { const assert = require('assert'); const { readFile } = require('fs'); const fixtures = require('../common/fixtures'); +const { replaceLinks } = require('../../tools/doc/markdown.js'); const html = require('../../tools/doc/html.js'); const path = require('path'); @@ -22,8 +23,22 @@ const remark2rehype = require('remark-rehype'); const raw = require('rehype-raw'); const htmlStringify = require('rehype-stringify'); +// Test links mapper is an object of the following structure: +// { +// [filename]: { +// [link definition identifier]: [url to the linked resource] +// } +// } +const testLinksMapper = { + 'foo': { + 'command line options': 'cli.html#cli-options', + 'web server': 'example.html' + } +}; + async function toHTML({ input, filename, nodeVersion }) { const content = unified() + .use(replaceLinks, { filename, linksMapper: testLinksMapper }) .use(markdown) .use(html.firstHeader) .use(html.preprocessText) @@ -96,6 +111,21 @@ const testData = [ file: fixtures.path('altdocs.md'), html: '
  • 8.x', }, + { + file: fixtures.path('document_with_links.md'), + html: '

    Usage and Example#' + + '

    Usage#

    node \\[options\\] index.js' + + '

    Please see the' + + 'Command Line Optionsdocument for more information.

    ' + + 'Example' + + '#

    An example of a' + + 'webserverwritten with Node.js which responds with' + + '\'Hello, World!\':

    See also#

    Check' + + 'out alsothis guide

    ' + }, ]; const spaces = /\s/g; diff --git a/test/fixtures/document_with_links.md b/test/fixtures/document_with_links.md new file mode 100644 index 0000000000..1392029a30 --- /dev/null +++ b/test/fixtures/document_with_links.md @@ -0,0 +1,20 @@ +# Usage and Example + +## Usage + +`node \[options\] index.js` + +Please see the [Command Line Options][] document for more information. + +## Example + +An example of a [web server][] written with Node.js which responds with +`'Hello, World!'`: + +## See also + +Check out also [this guide][] + +[Command Line Options]: cli.md#options +[this guide]: https://nodejs.org/ +[web server]: example.md -- cgit v1.2.3